发个STM32的USB库函数一个bug的解决方法

2019-07-20 08:00发布


声明一:
本资料是我在别处发现的,非我原创;
但我已经使用一年多了,确实有效。

声明二:
希望各位不要传播到A莫那里,自己用没问题!

STM32的USB库函数有bug。
在使用USB虚拟串口的时候,如果上位机软件没有打开(或者类似情况下),
下位机CPU会频繁进入USB库的中断,非常频繁,以至于不能正常执行其他操作,和死机基本相同。
原发帖人解决了这个问题,
我也遇到完全相同的问题,用这个解决方法同样有效。


ps:这个方法被本坛另一位网友验证了,参见    http://openedv.com/posts/list/0/64138.htm#365570



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
27条回答
lvehe
2019-07-21 13:36
V2.2.0的库已经修正了上述错误,修正如下:

[mw_shl_code=c,true]ep->xfer_buff  += len;
    ep->xfer_count += len;
   
    txstatus.d32 = USB_OTG_READ_REG32(&pdev->regs.INEP_REGS[epnum]->DTXFSTS);

/* Mask the TxFIFOEmpty interrupt  */
    if (ep->xfer_len == ep->xfer_count)
    {
      fifoemptymsk = 0x1 << ep->num;  
      USB_OTG_MODIFY_REG32(&pdev->regs.DREGS->DIEPEMPMSK,
                           fifoemptymsk, 0);
    }[/mw_shl_code]

一周热门 更多>