1.我用的STM32F429 MCU 2.并通过cubemx生成了 USB HOST HID的鼠标键盘demo 3.调试demo可以正常工作 4.调试 以control传输控制键盘的灯光正常,我使用了这个函数:'USBH_StatusTypeDef USBH_HID_SetReport(USBH_HandleTypeDef phost, uint8_t reportType, uint8_t reportId, uint8_t reportBuff, uint8_t reportLen)' 问题:现在我有一个HID设备,我已经枚举成功,在interface中它有一个interrupt OUT传输,我用同样控制键盘的方法去操作OUT传输数据,现在尝试是不行的,我在HID的文件中没有找到适合interrup OUT的用户函数,请问我需要自已写个interrupt OUT函数吗?谢谢 实验用工具的方式发送传输数据是可行的: 但我用status = USBH_HID_SetReport (phost,2,2,Outreport1.HID_reportBuff,sizeof(UHID_SetOutReport));传输数据,但device并没有收到, |
老铁,USB调试工具给我发一下,QQ741040423,谢谢老铁!
老铁,USB调试工具给我发一下,QQ741040423,谢谢老铁!
已解决; 在usb HOST libray中有一个usbh_ioreq.c ST官方给出了一个函数:USBH_InterruptSendData 枚举完成;直接调用就可以实现,但要注意发送的字节数和初始化的字节数不能溢出,如果report文件大于64byte,可以用for循环多次发送的的方式 /** @brief USBH_InterruptSendData Sends the data on Interrupt OUT Endpoint @param phost: Host Handle @param buff: Buffer pointer from where the data needs to be copied @param length: Length of the data to be sent @param pipe_num: Pipe Number @retval USBH Status. / USBH_StatusTypeDef USBH_InterruptSendData(USBH_HandleTypeDef phost, uint8_t buff, uint16_t length, uint8_t pipe_num) { USBH_LL_SubmitURB(phost, / Driver handle / pipe_num, / Pipe index / 0U, / Direction : OUT / USBH_EP_INTERRUPT, / EP type / USBH_PID_DATA, / Type Data / buff, / data buffer / (uint16_t)length, / data length */ 0U); return USBH_OK; }
已解决;在usb HOST libray中有一个usbh_ioreq.c
[md]您好,我和你在做类似的项目,mcu也是stm32f429做host,键盘和鼠标都是可以上传数据的,修改相关地方后,可以实现自定义hid设备,上传数据没有什么问题,就是下发数据不对,也用了USBH_InterruptSendData和send_reportsend,都是不行,请问有什么调试方法吗?如果帮忙调试,可以有偿,或者麻烦您提供一下你的通信代码,麻烦了。
[md]您好,我和你在做类似的项目,mcu也是stm32f429做host,键盘和鼠标都是可以上传数据的,修改相关地方 ...
请问后来解决了嘛,同样遇到这个问题