本帖最后由 jcdzxh 于 2018-3-30 11:18 编辑
为了加深理解硬件逻辑,实验程序用寄存器操作的,典型的VCP应用,用的是JlinkVcp的描述,收到触发命令往上位机上传512KB字节,用串口助手接收转存为文件,用WINHEX做比对验明正确性,先是单缓冲实验OK,然后改成双缓冲,问题来了,接收到的512KB,总是有400多到2-3千字节差错,试验30次以上,出错无规律。折腾两天,无果而终,因此论坛求助。同样程序不作任何改动,STM32结果正确。
程序是用STM32的H文件写的,
48M和72M都试过,APB1 1分频2分频都试过,
回头看改动,
_SetEPDblBuf0Addr(ENDP1,ENDP1_TXADDR);
_SetEPDblBuf1Addr(ENDP1,ENDP1_RXADDR);
_SetEPDblBuf0Count(ENDP1,EP_DBUF_IN,i);
_SetEPDblBuf1Count(ENDP1,EP_DBUF_IN,i);
和单缓差别仅仅增加了这2种4个宏操作,试图在GD32F10x_USB_FS_Device_Lib_V2.0.0这个包里找找蛛丝马迹看这些宏操作有没有差别,却没有找到,
恳求哥哥些救我出坑,谢谢!
|