关于STM32F105/107来说,为了监测USB的衔接问题,程序默许是经过Vbus管脚进行查看的。可是Vbus管脚和UART1的TXD复用,导致咱们在运用UART1发送数据时分,USB重启的问题。为了处理这个问题,自己查了很多的材料和咨询了不太靠谱的STM32技术支持,一向没有得到处理的办法。
在STM32F105数据手册上是这样说的“假如另一个同享的外设要运用OTG_FS_VBUS引脚(PA9)或把它作为通用I/O口,有必要激活PHY的断电形式(铲除OTG_FS_GCCFG寄存器的位16)。”这个位在程序中的界说如下:
- gccfg.d32 = 0;
- gccfg.b.vbussensingB = 1;
- gccfg.b.pwdn = 1;
仿制代码
位16即为pwdn,在程序中把这个为清零后USB底子不会去查看USB枚举,彻底无法完成USB通讯,所以依据手册处理是不可的。
咱们都知道STM32F103是经过在D+管脚上参加上拉电阻完成软衔接的,那么同样在这个管脚上进行软衔接操控,初始化后直接把D+上拉,这样USB查看是没有问题了,一起在经过UART1的TXD发送数据时,因为D+现已被上拉,所以即便Vbus被拉低了但D+仍是被拉高,过USB不会重启,然后完成了USB和UART1的共用。