请问怎么使用ST USB HOST 库的 USBH_Set_Report函数?

2019-07-20 02:01发布

用STM32F407开发板移植ST官方USB HOST库已经可以读取USB键盘的值

遇到的问题是,想设置键盘的CAPSLOCK和NUMLOCK等按键的指示灯,不知道怎么可以设置成功。请各位大神给个思路帮忙解决一下~~~

调试过程:
1、电脑端Bus Hound检测数据
      按键盘CAPSLOCK(大小写锁定键),PC收到 00,00,39, 00,00, 00, 00, 00
      紧接着 PC 发送数据 0x21, 0x09, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00,0x02

2、在ST的USB HOST库文件 usbh_hid_core.c 中

USBH_Status USBH_Set_Report (USB_OTG_CORE_HANDLE *pdev,
                                 USBH_HOST *phost,
                                    uint8_t reportType,
                                    uint8_t reportId,
                                    uint8_t reportLen,
                                    uint8_t* reportBuff)
{
  
  phost->Control.setup.b.bmRequestType = USB_H2D | USB_REQ_RECIPIENT_INTERFACE |
    USB_REQ_TYPE_CLASS;    //该值为0x21
  
  
  phost->Control.setup.b.bRequest = USB_HID_SET_REPORT;//该值为0x09
  phost->Control.setup.b.wValue.w = (reportType << 8 ) | reportId;//该值为0x2000, 尝试过大端小端问题
  
  phost->Control.setup.b.wIndex.w = 0;
  phost->Control.setup.b.wLength.w = reportLen;
  
  return USBH_CtlReq(pdev, phost, reportBuff , reportLen );
}

这个函数封装的内容应该是用来设置主机发给USB HID 设备的函数,但是调试过程中发现没有作用。

3、不知道是我搜索的关键词不对还是什么问题,百度和Google都找不到解决方案

麻烦各位提供个思路哈~~~~
谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。