前两天刚遇到类似的问题,正准备上来吐槽。
以前用3.3的USB固件库调通过。
前两天改为4.0的USB固件库,用USB线连接PC机并给STM32F103上电工作正常,但如果不接USB线给STM32F103上电就不停进中断。
跟踪发现是ESOF和SUSP中断。
将usb_conf.h文件中的
#define IMR_MSK (CNTR_CTRM | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM | CNTR_SOFM \
| CNTR_ESOFM | CNTR_RESETM )
改为
#define IMR_MSK (CNTR_CTRM /*| CNTR_WKUPM | CNTR_SUSPM*/ | CNTR_ERRM | CNTR_SOFM \
/*| CNTR_ESOFM*/ | CNTR_RESETM )
即正常。
但又带来新问题:拔掉USB线后(此时STM32F103由别的电源供电),STM32检测不到连接断开,USB固件状态机状态不变。
以上仅供参考。 |