发个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
1楼-- · 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]
wendell.li
2楼-- · 2019-07-21 17:04
xuande 发表于 2015-12-8 14:20
原帖如下:

usb_dcusb_dcd_int.c文件中,函数DCD_WriteEmptyTxFifo有个bug,会导致经常死循环,导致us ...

按照这个修改进行操作结果总是丢包。发不出去
stayhungry
3楼-- · 2019-07-21 22:07
 精彩回答 2  元偷偷看……
zyzy1251
4楼-- · 2019-07-21 23:55
lvehe 发表于 2016-4-28 19:33
V2.2.0的库已经修正了上述错误,修正如下:

[mw_shl_code=c,true]ep->xfer_buff  += len;

你好,请问下V2.2.0的库能在哪里下载到?
lvehe
5楼-- · 2019-07-22 03:19
 精彩回答 2  元偷偷看……
zmingwang
6楼-- · 2019-07-22 04:45
 精彩回答 2  元偷偷看……

一周热门 更多>