将STM32 HAL USB VBUS作为普通IO端口异常问题解决
在新更新的硬件板上使用VBUS作为普通IO端口,测试时发现VBUS控制的LED异常闪烁,怀疑其原因是VBUS功能没有完全关闭。 参考相关资料STM32 USBD VBUS PA9 as GPIO
解决办法如下。
1 .由于使用了PA9作为公共GPIO端口,因此必须关闭vbussensing(bit21 )功能。
2 .还必须重置名为2.bit19vbusbsenandbit18vbusasen的两个位。
在STM32 HAL库下更改
USB_DevInit
/* activatevbussensingb */usbx-GC CFG|=USB _ otg _ GC CFG _ vbusbsen; if(CFG.vbus_sensing_enable==0u ) usbx-GC CFG|=USB _ otg _ GC CFG _ novbussens; usbx-GC CFG=~~ USB _ otg _ GC CFG _ vbusasen; //resetbitvbusasenusbx-GC CFG=~(USB _ otg _ GC CFG _ vbusbsen ); //reset bit VBUSBSEN }