根据香主的贴子用了!在数据未准备好时!
else if((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_REPORT)
{
if (数据未准备好)
return USB_NOT_READY;
CopyRoutine = CustomHID_GetReport;
}
STM32将以NAK回应PC端的IN请求.
请教!
1。PC端收回NAK,应该用不断重试请求数据吧!多久重试一次!
2。STM32如长时间未准备好数据,一直回应NAK,一般多久PC会认应超时。
香主的:
pInformation->Ctrl_Info.CopyData = CustomHID_GetReport;
pInformation->Ctrl_Info.Usb_wOffset = 0;
CustomHID_GetReport(0);
pInformation->Ctrl_Info.PacketSize = pProperty->MaxPacketSize;
DataStageIn();
添加那几行代码,可以在Get Report命令到来时,如果数据未准备好,给你多一些时间准备数据(根据PC端驱动的情况,估计可以有20~100ms的时间),而不必让PC端做超时处理。
实测好象不起什么做用!在几MS或十几ms数据未准备好!PC端就认为超时了!
特别上位机使用:HidD_GetInputReport() 一超时这个函数就等时5秒。 |