香主:实测结果是这样的,上位机使用 HidD_GetInputReport 读一次报告!
使用Bushound监测为:
Device Phase Data Description
24.0 CTL a1 01 03 01 00 00 14 00 GET REPORT
stm32这边:仿真到下面代码。即数据未准备好!返回:return USB_NOT_READY;
if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_REPORT)
{
if (!isReady)//数据未准备好
{
memset(Transceive_Buffer,0,256);
Transceive_Buffer[0]=0x01;
Transceive_Buffer[1]=0x01;
isReady=TRUE;
return USB_NOT_READY;
}
这是根据您的**上所写的:return USB_NOT_READY; 就是返回NAK。。
结果只要返回一次NAK,然后 HidD_GetInputReport 这个函数就认为是超时了!它的返回错误值也是超时。时间是5秒。
主要是为什么不明白只返回一次 USB_NOT_READY 驱动就认为是超时!不应该是驱动再试么,试N次后再超时。
|