最近在研究USBOTG,遇到了如下问题:
想实现PC发送的数据,STM32接受到返回该数据。利用Custom_HID修改,版本3.1.0
本人程序中开了软件缓冲区,STM32的USB接受到来自PC的数据写到缓冲区里,主程序判断当缓冲区有数据则操作以下:
USB_SIL_Write(EP1_IN, (uint8_t*)Receive_Buffer,4);
OTGD_FS_FlushTxFifo(64);
当PC发送数据时,发送次数100次,发送间隔10ms不会出现问题,STM可以收到数据且返回给PC。当发送次数10000次,发送间隔10ms,PC机USBDEBUG会提示读取数据失败,此时STM32一直进入
/* IN Endpoint interrupt */
#ifdef INTR_INEPINTR
if (gintr_status.b.inepint)
{
retval |= OTGD_FS_Handle_InEP_ISR();//一直在IN 中断里循环。
}
为什么一直会进入IN中断,如何解决此问题? |