我正在尝试为键盘和鼠标实现一个 USB 主机。我已成功实施此处显示的演示
主机已成功接收按键操作。
我正在为如何以及在何处实现键盘的 LED 控件而苦苦挣扎。据我了解,这是通过 USBH_HID_SetReport(phost, 0x02, 0x00, rep, 0x01) 完成的。
使用上面的函数永远不会发送报告,并且总是返回忙状态。
如果有人可以建议何时何地实施,将不胜感激。
2022-12-20 15:22:59
hpbarden1.5619771485320828E12,
ST提供的HID例子在USBH_HID_ClassRequest()函数中有host对device的其他请求的例子。
该函数包含一个重复调用的状态机。
它依次调用每个获取或设置请求(USBH_HID_GetHIDReportDescriptor、USBH_HID_SetIdle、USBH_HID_SetProtocol...)。
它没有使用 USBH_HID_SetReport 的示例,但可以以类似的方式使用,
也许,修改 HID 类模块并将您的请求添加到其“类请求”状态机中。
所有这些都是控制请求,并通过 USBH_CtlReq() 执行,USBH_CtlReq() 在控制 EP 周围具有类似的状态机。
> 另外,你指的是Host端的USB中断阻塞吗
通过阻止中断我的意思是中断不应该被禁用很长时间,等待用户回调中的任何东西等等。
ST 库设计为在没有 RTOS 的情况下工作,因此可能看起来有点落后......
hpbarden1.5619771485320828E12,
ST提供的HID例子在USBH_HID_ClassRequest()函数中有host对device的其他请求的例子。
该函数包含一个重复调用的状态机。
它依次调用每个获取或设置请求(USBH_HID_GetHIDReportDescriptor、USBH_HID_SetIdle、USBH_HID_SetProtocol...)。
它没有使用 USBH_HID_SetReport 的示例,但可以以类似的方式使用,
也许,修改 HID 类模块并将您的请求添加到其“类请求”状态机中。
所有这些都是控制请求,并通过 USBH_CtlReq() 执行,USBH_CtlReq() 在控制 EP 周围具有类似的状态机。
> 另外,你指的是Host端的USB中断阻塞吗
通过阻止中断我的意思是中断不应该被禁用很长时间,等待用户回调中的任何东西等等。
ST 库设计为在没有 RTOS 的情况下工作,因此可能看起来有点落后......
举报