ps:
耗费了一天去了解怎么实现usb协议下的HID传输,因为各个文章没有说清楚,导致我数据的内容总时接收不到或者错位,所以特意写一篇文章来具体指出了各个步骤的坑
开发环境
windows
stm32f103rct6
stm32cubemx
keil
joystick模块(5针)两轴
初始配置
开启时钟
USB时钟 一定 48M
打开USB
配置HID
配置完成
代码编写
打开usbd_hid.c
应为stm32cbemx 自动生成的HID是鼠标,所以需要更该报告描述符
如下
__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
{
0x05, 0x01,
0x09, 0x04,//joystick
0xA1, 0x00,
0x05, 0x01,
0x09, 0x30,//x
0x09, 0x31,//y
0x09, 0x32,//z
0x09, 0x33,//rx 旋转x轴
0x15, 0x00,//最小数据输入 0
0x25, 0x7F,//最大数据输入 127
0x75, 0x08,//数据字节 8
0x95, 0x04,//一次的数据个数 4个 即 x y z rx