最近在研究minifly,昨天突发奇想想用正点原子minifly的遥控器当一个游戏手柄打游戏放松一下然后就有了这篇博客。
一.cubemx配置
参考资料:https://www.bilibili.com/read/cv9584555
https://blog.csdn.net/u014415522/article/details/107006787/
首先需要看一下minifly遥控手柄的原理图
主要用到的就是两个遥感,从原理图可以看出每一个遥感需要两个adc采集,x方向和y方向。
原理就是stm32通过hid协议与主机通信
1. 时钟配置
2.ADC配置
多通道连续扫描
3.USB配置
4.生成代码
二.程序
因为cubemx默认生成的设备是鼠标,这里需要改一下
以下代码通过下图软件hid descriptor tool自动生成,除了做游戏手柄外还可以做键盘。。。
(USB 协会提供了一个HID 描述符编辑工具称作HID Descriptor Tool,其执行程序为DT.exe。)
这里介绍一下HID
HID是Human Interface Device的缩写,HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。只要符合HID类别规范的设备都是HID设备。使用STM32的USB功能可以实现HID设备的功能。协议的具体内容可以参考这篇博客https://blog.csdn.net/zhoutaopower/article/details/82469665
hid descriptor tool参考资料: https://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/
点击file->Save as为.h文件
生成的.h文件如下
// C:\Users\WYD\Desktop\Desc4.h
char ReportDescriptor[27] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x00, // COLLECTION (Physical)
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x09, 0x30, // USAGE (X)
0x09, 0x31, // USAGE (Y)