#技术资源#
Nationstech.N32G45x_Library.2.0.0这个版本的固件库,其usb部分的usb_regs.h的如下部分:
#define _BlocksOf32(dwReg, wCount, wNBlocks) \
{ \
wNBlocks = wCount >> 5; \
if ((wCount & 0x1f) == 0) \
wNBlocks--; \
*pdwReg = (uint32_t)((wNBlocks << 11) | 0x8000); \
} /* _BlocksOf32 */
应改为:
*pdwReg = (uint32_t)((wNBlocks << 10) | 0x8000);
具体原因可参考UM_N32G45x系列用户手册V2.0.0.pdf文档的19.5.4.4章节对于接收数据字节数寄存器的描述,如果是右移11位,则当wCount = 64时写入该寄存器中NUM_BLK[4:0]域的值为二进制0100,对应表19-10则分组缓冲区的大小就被错误的设置为96字节。
请官方提供这种底层库的时候注意检查。
|