我正在开发一个项目,该项目使用 SDK 示例中的 EZ-USB FX3 USB 3.0 设备控制器和 RTOS。
不重要,但我目前的问题是:AppThread 主循环(用于以特定时间间隔同步 UART
通信)和异步 USB Setup 请求回调处理程序函数之间的 Uart 访问之间存在竞争条件。 -> 在执行主循环UART功能的同时,正在执行USB消息处理UART功能。
要解决这个问题,我需要知道的是:USBsetuPCB 是如何处理的。
- > 在处理 USB Setup 请求时,我的 RTOS AppThread 是否中断(并停止了?
还是在 RTOS 中生成另一个线程来并行处理 UsbRequest?
传达设置的一般信息:
(这不是我的代码,但传达了结构,USB和UART设置正确)
appThread_Entry () {applNinit (void) for (;;) {
CyU3PThreadSleep(1000);
len =
CyU3PUartReceiveBytes( inBuf, 1, NULL);
}
} A
pplNinit (void)
A
pplNinit (void) appusbSetupcb () vendorReq {
CyU3PUsbRegisterSetupCallback(AppUsbSetupCB)
}
{
case CY_U3P_USB_VENDOR_RQT:
isHandled = VendorRequest(bReqType, bRequest, wValue, wIndex, wLength);
return isHandled;
}
{
CyU3PUartTransmitBytes( outBuf, 1, NULL);
CyU3PUartReceiveBytes( inBuf, 1, NULL);
}