zerone 发表于 2024-11-14 11:48:43

usb做CDC,PC发送设备返回可以,设备主动发送数据卡死,什么原因

使用USB_SendData,发送数据,发送前用bUsbInBusy做了判断。但是主动发送给PC,设备就卡死

DebugLab 发表于 2024-11-14 12:20:40


我用库函数正常发送数据,看一下哪里不一样
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=9938

晓飛飛 发表于 2024-11-14 13:35:38

你可以试试中断方式,可能会解决问题
因为查询方式一般需要把查询代码放主循环里面,如果你中断的代码冗长,阻塞了主循环的查询可能会导致发送卡死。

zerone 发表于 2024-12-2 11:10:33

demo程序里都是先收到数据然后返回。如果主动向PC发送数据就会卡死,不管是用 USB_SendData 这个函数,还是
void CDC_Printf(const char *v,...)
{
        va_list ap;
        va_start(ap,v);
        USB_SendData(UsbInBuffer,vsprintf(UsbInBuffer,v,ap));
        va_end(ap);
} 这段函数,只要是主动发送就会卡死,但是如果上位机连接成功后就能执行,不知道是什么原因
页: [1]
查看完整版本: usb做CDC,PC发送设备返回可以,设备主动发送数据卡死,什么原因