使用STM32的USB开发库实现:
1)在usb_prop.c的函数CustomHID_Data_Setup()中,GET_PROTOCOL之后增加的代码变为这样:
/*** GET_REPORT ***/
else if((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))
&& RequestNo == GET_REPORT)
{
if (数据未准备好)
return USB_NOT_READY;
CopyRoutine = CustomHID_GetReport;
}
STM32将以NAK回应PC端的IN请求。
2)同样增加一个函数CustomHID_GetReport。
3)在数据准备好之后(注意准备数据的时间不能太长,否则PC端会做超时处理),执行下述操作:
pInformation->Ctrl_Info.CopyData = CustomHID_GetReport;
pInformation->Ctrl_Info.Usb_wOffset = 0;
CustomHID_GetReport(0);
pInformation->Ctrl_Info.PacketSize = pProperty->MaxPacketSize;
DataStageIn();
|