用stm32模仿Joystick自制usb接口的HID六轴24按键游戏摇杆,貌似快成功了……

天行剑 2015-02-03 10:22:54
发现市面上卖的汽车方向盘、飞行摇杆其实协议和鼠标键盘都是HID设备,正巧前一阵子自己用stm32将官方的joystick例程改成了可以用电位器控制移动速度的鼠标、可用按钮控制的小键盘,于是想着自己做一个类似于fly5(图示)飞行摇杆。做了很久,stm32的usb接口报告描述符总是出错,于是从网上下载一个前辈做好的游戏手柄,各种描述符通过了,奈何电脑无法识别从stm32发送过来的量。
下图是我用stm32烧写进自己改过的程序后连接电脑显示的,可以看到电脑可以识别为游戏操纵杆了:

打开属性后,六个轴和24个按键都显示出来了,觉得报告描述符应该没问题。后面不管我怎么按下各种按键,对应的按钮或者轴都没有反应。我担心是GPIO口没控制好,于是直接每轮循环都是如下设置,就是说不按下按钮也该识别出来了:
sendbuf[3] |= 0x08;
USB_WriteEP(0x81,sendbuf,6);
结果还是不行:

用bus hound来看,数据确实发到电脑上了,只是上位机软件识别不了,此时我觉得可能是我发送的数据不是通用格式,有可能是“USB_WriteEP(0x81,sendbuf,6)”这个模块有问题。
然后我撤下我的stm32板子换上现成的游戏摇杆:

可以识别并能够正常通信了,按下按钮,晃动摇杆,都可以显示:

真的不知道怎么办了,请大家给点思路吧。最后附上源码及下载地址(未经过我修改的)
pudn程序员联合开发网下载地址:
http://www.pudn.com/downloads542/sourcecode/embedded/detail2238611.html
csdn下载:
http://download.csdn.net/download/gezi0/5357395
...全文
5161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bg8wj 2016-11-20
  • 打赏
  • 举报
回复 1
这个不复杂啊,设置好usb hid设备的几张表不就行了,上报的例程和usb鼠标device一样。对应好几个键值数据表就行,另外注意win下dx10只支持最大64按键。不复杂。好好看看usb hid 例程很简单。
fool12 2016-05-17
  • 打赏
  • 举报
回复
我在找个STM32通过USB口传陀螺仪数据到电脑的demo,有相关例程请告诉我,非常感谢!
fool12 2016-05-17
  • 打赏
  • 举报
回复
要10分,下不起。。。
wofei1314 2016-04-10
  • 打赏
  • 举报
回复
前辈, 还在做这个吗?现在搞定了吗?

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧