OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3667|回复: 5

stm32f401CCU把虚拟串口转换成正常gpio时,gpio不能正常使用

[复制链接]

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-9-13
在线时间
1 小时
发表于 2018-9-13 16:14:11 | 显示全部楼层 |阅读模式
!!!!跪拜论坛各位大牛,小弟初来匝道,这厢有礼了!!!!!!

操作: 先使用usb虚拟串口输出,然后再使用硬件串口输出。
               gpio PA11,PA12 复用为 usb,然后gpio PA11,PA12 复用硬件串口usart6

1、虚拟串口初始化成功,可以正常发送数据,使用的是 hal 库进行的
      初始化函数为 USB_DEVICE_Init()
     void USB_DEVICE_Init(void)
    {
         USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS);

         USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC);

        USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS);

        USBD_Start(&hUsbDeviceFS);
    }
    此函数为利用 cube 自动生成,然后拿过来直接用的。

2、由于使用过虚拟串口之后,仍然需要使用硬件串口,所以失能了虚拟串口,重新使能了硬件串口,使用的是usart6.
       ① hal 库中没有直接给出失能 虚拟串口的api,不过找到了 USBD_Stop(&hUsbDeviceFS) 和 USBD_DeInit(&hUsbDeviceFS) 两个函数,
      然后调用这两个函数,进行失能虚拟串口操作。
       ② 重新使能硬件usart6.
3、使用硬件usart6进行发送数据,发现usart6发送数据不成功。


---------------------------------------现象记录与个人分析------------------------------------------------


1、通过单步调试时,发现 从 虚拟串口 --->转化为----> 硬件串口后(gpio复用为usart6),串口寄存器 SR 中的 LBD 位置 1,LBD位的中文解释见图


2、怀疑是gpio复用时出错,但是找不到原因(找的想哭,呜呜呜......)
         ① 此处做过一个测试,就是失能 虚拟串口--->失能虚拟串口---->将gpio作为普通输出----->无法拉高或者拉低gpio。
         ② 另外还做过一个测试,硬件 uart6 初始化---->失能usart6--->把gpio重新当做输出功能--->可以正常的拉高拉低gpio

各位见过做过这种操作吗??? 遇到过这种问题吗???  
大牛们能观望一下,给点建议吗???


LBD.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-9-13
在线时间
1 小时
 楼主| 发表于 2018-9-13 16:19:37 | 显示全部楼层
另外补充一下,当 失能虚拟串口--->失能虚拟串口---->将gpio作为普通输出----->无法拉高或者拉低gpio 时:
   gpio的 IDR寄存器不随 ODR 的改变而改变
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-9-13
在线时间
1 小时
 楼主| 发表于 2018-9-13 16:29:02 | 显示全部楼层
LBD 置一 时,是 使能硬件串口--->使能虚拟串口--->失能虚拟串口 ---> 使能硬件串口
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-9-13
在线时间
1 小时
 楼主| 发表于 2018-9-13 16:29:48 | 显示全部楼层
cxtdy 发表于 2018-9-13 16:19
另外补充一下,当 失能虚拟串口--->失能虚拟串口---->将gpio作为普通输出----->无法拉高或者拉低gpio 时:
...

使能虚拟串口--->失能虚拟串口---->将gpio作为普通输出----->无法拉高或者拉低gpio
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2018-9-13
在线时间
1 小时
 楼主| 发表于 2018-9-13 23:33:02 来自手机 | 显示全部楼层
竟然没有人
回复 支持 反对

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-9-14 08:49:51 | 显示全部楼层
个人表示还没有用到类似的操作,帮顶
十六进制带我飞。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 05:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表