/**
* @brief Send the report to the Host
* @param report: The report to be sent
* @param len: The report length
* @retval USBD_OK if all operations are OK else USBD_FAIL
*/int8_tUSBD_CUSTOM_HID_SendReport_FS(uint8_t*report,uint16_t len){returnUSBD_CUSTOM_HID_SendReport(&hUsbDeviceFS, report, len);}
main.c中增加发送USB HID 报告的测试程序
#include"main.h"#include"usb_device.h"#include"usbd_custom_hid_if.h"voidSystemClock_Config(void);staticvoidMX_GPIO_Init(void);voidusb_hid_send_response(uint8_t dat){uint8_t SendBuffer[64]={0};for(uint8_t i =0; i <sizeof(SendBuffer); i++){
SendBuffer[i]=0x41;}
SendBuffer[1]= dat;USBD_CUSTOM_HID_SendReport_FS(SendBuffer,sizeof(SendBuffer));}intmain(void){uint8_t cnt =0;HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USB_DEVICE_Init();while(1){HAL_Delay(5000);usb_hid_send_response(cnt);
cnt++;}}
编译下载,电脑端开启USB HID调试工具,进行通信的验证
通信验证
打开USB HID 调试工具
https://gitee.com/zhangsz0516/usb_hid_tool
配置好 USB HID设备的VID、PID
发现USB HID 工具可以收到:STM32 USB HID的报告了
点击 LED1_ON 按钮,发现:STM32 USB HID 设备端,可以接收到 USB主机发送的数据
如何接收与处理 USB 主机发送过来的数据,后面再详细讲解
小结
初步搭建了STM32 CUSTOM USB HID设备的调试环境
需要了解USB HID 相关的协议,如【报告描述符】的编写规则
简单的实现了 自定义 CUSTOM USB HID双向通信,处理好接收与发送,就可以进一步实现数据的采集与控制了