当前位置:   article > 正文

STM32H743+USBHID+CubeMX配置

STM32H743+USBHID+CubeMX配置

一、环境准备

电脑系统:Windows 10 专业版 20H2

IDEKeil v5.35、STM32CubeMX v6.5.0

测试硬件:正点原子阿波罗STM32H743

二、测试步骤

1、使用用例工程

配置STM32H743定时器功能-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/horse_2007s/article/details/139175169

2、配置USB引脚

在“Connectivity”中,选择“USB_OTG_FS”,如图,即选择PA11与PA12对应的USB,且为FS类型

3、配置中间件HID从设备

在“Middleware”中,选择“USB_DEVICE”,设置“FS”的IP核为HID

设置通讯间隔

设备PID VID

4、设置USB时钟(48M倍数)

5、生成工程代码代码

完成初始化

6、修改USB描述符

在 usbd_custom_hid_if.c 中

  1. /** Usb HID report descriptor. */
  2. __ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
  3. {
  4. /* USER CODE BEGIN 1 */
  5. 0x05,0x8c, /* USAGE_PAGE (ST Page) */
  6. 0x09,0x01, /* USAGE (Demo Kit) */
  7. 0xa1,0x01, /* COLLECTION (Application) */
  8. // The Input report
  9. 0x09,0x03, // USAGE ID - Vendor defined
  10. 0x15,0x00, // LOGICAL_MINIMUM (0)
  11. 0x26,0x00, 0xFF, // LOGICAL_MAXIMUM (255)
  12. 0x75,0x08, // REPORT_SIZE (8bit)
  13. 0x95,0x40, // REPORT_COUNT (64Byte)
  14. 0x81,0x02, // INPUT (Data,Var,Abs)
  15. // The Output report
  16. 0x09,0x04, // USAGE ID - Vendor defined
  17. 0x15,0x00, // LOGICAL_MINIMUM (0)
  18. 0x26,0x00,0xFF, // LOGICAL_MAXIMUM (255)
  19. 0x75,0x08, // REPORT_SIZE (8bit)
  20. 0x95,0x40, // REPORT_COUNT (64Byte)
  21. 0x91,0x02, // OUTPUT (Data,Var,Abs)
  22. /* USER CODE END 1 */
  23. 0xC0 /* END_COLLECTION */
  24. };

7、修改通讯帧长度

usbd_customhid.h中

8、声明外部定义的USB句柄

  1. extern USBD_HandleTypeDef hUsbDeviceFS;
  2. uint8_t usbrx[64];

9、在接收事件中添加代码

  1. static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state)
  2. {
  3. /* USER CODE BEGIN 6 */
  4. UNUSED(event_idx);
  5. UNUSED(state);
  6. //获取接收指针
  7. USBD_CUSTOM_HID_HandleTypeDef *hhid = (USBD_CUSTOM_HID_HandleTypeDef *)(hUsbDeviceFS.pClassData);
  8. //将数据copy到接收缓存
  9. for(int i=0;i<64;i++)
  10. {
  11. usbrx[i]=hhid->Report_buf[i];
  12. }
  13. //处理,或者在其他地方处理
  14. USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS,usbrx,64);
  15. /* Start next USB packet transfer once data processing is completed */
  16. if (USBD_CUSTOM_HID_ReceivePacket(&hUsbDeviceFS) != (uint8_t)USBD_OK)
  17. {
  18. return -1;
  19. }
  20. return (USBD_OK);
  21. /* USER CODE END 6 */
  22. }

10、编译运行

 

三、运行效果

USB Tree检测正常

调试助手通讯正常

四、工程资料下载

2-USBHID.rar (访问密码: 1666)icon-default.png?t=N7T8https://url48.ctfile.com/f/33868548-1250138927-85bc77?p=1666
 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号