mscs13179 发表于 2017-8-8 16:38:03

关于USBH_HID_SetReport函数如何使用

知识背景:对于HID类,OUT端点并不是必须的.
根据USB HID协议,当没有专用的OUT端点时,set report使用control端点实现,具体就是通过HID类的请求,然后通过Data stage携带set report数据.

现在遇到一个项目需要进行双向通讯的HID。使用STM32F105作为usb host,
1、目前在在en.stm32cubef1\STM32Cube_FW_F1_V1.4.0\Projects\STM3210C_EVAL\Applications\USB_Host\HID_Standalone基础上修改能够正常的读取input端点发送的数据。
2、《UM1720【用户手册】STM32Cube™ USB 主机库》中提到USBH_HID_SetReport[通过控制通道发送报告数据 ],不知道如何使用这个USBH_HID_SetReport函数。

海迹天涯 发表于 2017-8-8 17:25:29

我也想知道,给你顶起

mscs13179 发表于 2017-8-9 11:37:51

海迹天涯 发表于 2017-8-8 17:25
我也想知道,给你顶起

我的猜测
static USBH_StatusTypeDef USBH_HID_ClassRequest(USBH_HandleTypeDef *phost)中添加

case HID_REQ_SET_REPORT:
    {
      uint8_t buff = { 0x0, 0x0 };//这测试固定为常量
      USBH_StatusTypeDef ret = USBH_HID_SetReport(phost, 2, 0, buff, 1);

      if ((ret == USBH_OK) || (USBH_NOT_SUPPORTED == ret))
      {
            HID_Handle->ctl_state = HID_REQ_IDLE;
            status = USBH_OK;
            /* all requests performed*/
            phost->pUser(phost, HOST_USER_CLASS_ACTIVE);

      }
    }
    break;
但是不知道如何触发这个
如何触发这个HID_Handle->ctl_state = HID_REQ_SET_REPORT

mscs13179 发表于 2017-8-16 15:51:17

海迹天涯 发表于 2017-8-8 17:25
我也想知道,给你顶起

我原理通了,弄个简单demo工程教程思路和工程
页: [1]
查看完整版本: 关于USBH_HID_SetReport函数如何使用