用stm32的usb hid实现游戏控制器
2025-10-22 来源:bilibili
1、 用cubemx生成基础工程,游戏控制器一般就是按钮和旋钮的组合,按钮就是gpio,旋钮是adc。具体配置就不罗嗦了。


connectivity这里打开usb,勾选Device,参数保持默认即可。

Middleware and Software Packs这里选择USB_DEVICE,Mode这里选择Custom HID,参数如果懂可以根据需求改,不懂保持默认,后边我们在代码里改也可以。

之后配置好时钟和其他设置,生成代码即可。
2、 我用的vscode+platformio开发环境,新建工程并打开导出的代码。Cubemx和platformio的文件夹结构不同,需要挪一下文件,主要是将Core/Src下的文件放到src下,将Core/Inc下的头文件放到include下,将USB_DEVICE下的两个文件夹放到lib下。当然也可以在platformio.ini中配置添加这些文件的路径,不过我还是喜欢直接拖拽。

此时编译下载到板子应该是可以被电脑识别为hid设备了。

此时汇报描述符没配置,所以识别类别未知。下面就填充汇报描述符,这是hid进行通信的基础。填充这个结构体需要参考《HID Usage Tables》这个文件,这里定义了各种hid设备的用法。另外官方还提供了一个工具Dt.exe构建汇报描述符。

前三行和最后一行是必须要的,第一行表明是一般桌面应用,第二行指明设备是game pad类型,第三行的Application是规定必须有的。中间部分是实际的按键和旋钮,根据自己的实际需求定义。详细语法规则就不罗嗦了,可以参考《USB Complete_ The Developer’s Guide 4th Edition》这本书。我演示的这个也不规范,不过实测可以用。
配置好后导出为头文件,就生成了我们需要的汇报描述符结构体。将结构体的内容复制到usbd_custom_hid_if.c文件中的CUSTOM_HID_ReportDesc_FS结构体中

记得修改结构体大小的宏USBD_CUSTOM_HID_REPORT_DESC_SIZE为实际结构体大小,不然会导致识别出错。这个宏下边的宏决定了汇报速度,想要汇报的快就要改小,最小为1。

到此,编译下载电脑应该可以正常识别为一个游戏控制器了。

接下来就是汇报实时数据了,我们需要构建一个结构体,其内容大小和顺序要跟汇报描述符里边定义的一致。

定义结构体要注意结构体对齐的问题,不然会出现汇报数据错位的问题,因为系统会自动对齐结构体成员,可能会添加额外的无用字节占位。
然后在主程序里开启ad转换并填充结构体,最后调用汇报函数。

汇报函数在usbd_custom_hid_if.c文件中最后,默认是注释掉的,要用的话需要取消注释,并将static关键字去掉,将函数在usbd_custom_hid_if.h中声明一下就OK了。


到此,在游戏控制器中的属性就可以看到轴和按键的情况了。


我发现stm32的adc各个通道之间有影响,目前还没有找到解决办法。以上只是一个演示,要想实际应用还需要进一步优化,要根据自己实际的硬件情况修改引脚配置。
- 意法半导体中国本地造STM32微控制器启动规模量产
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 基于机智云与STM32的智能拐杖安全监测系统在养老物联网中的应用
- 内置全栈安全,一站式满足CRA法案与IEC 62443标准——米尔STM32MP257核心板
- 如何用 STM32 FLASH 实现等效 100 万次擦写的 EEPROM 功能?
- 实战解析:通过一个小项目掌握STM32所有外设
- STM32学了两年半,却还是不会做项目
- 意法半导体推出最新STM32MP21微处理器,兼具高性价比、低功耗、高灵活性
- 基于STM32的矿井作业环境监测系统设计与实现
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




