stm32usb库bug及解决办法

本人项目开发stm32usb设备的时候,发现usb发送会经常性的阻塞main函数,或者说无法让程序流畅的运行,实时性大打折扣,甚至会卡几十毫秒都很正常,我不明白st为什么会写出这样的usb程序,实属脑残,经过几经周折找到了解决办法:

usb_dcusb_dcd_int.c文件中,函数DCD_WriteEmptyTxFifo有个bug,会导致经常死循环,导致usb库耗时过长。
应该如下修改,在原始程序中增加红框内的语句:

stm32usb库bug及解决办法

usb的连接并不属于可靠实时性连接,有时会丢包都很正常,修改后usb不再会出现阻塞问题,非常流畅,但要注意增加丢包处理逻辑,来解决usb丢包问题。本人开的的是usbhid设备,附赠上位机三平台源码https://download.****.net/download/u012572552/10612090