STM32制作的摇杆手标(情怀)
金坷居士2015/07/20电子技术 IP:澳大利亚
IMG_6709.jpg
图片镇楼 目前楼主正在用这个东西打坦克世界
因为这个手标没右键 所以有点蛋疼 目前还木有干掉过敌人orz

STM32做HID(人机交互设备)非常方便,自带USB口,还有官方的按键鼠标历程
本程序就是通过修改官方例子而来,删除了无用代码,极其精简

这是电路图,配上STM32最小系统板使用即可
circuit.png
摇杆输出的是模拟电压,因此用到了ADC功能,ADC配置一下就直接用了,并没有用到DMA,因为采样速度不需要辣么高,采样多次之后去掉第一次和最后一次结果再求平均,求平均的时候没用除法而用了位移,因为位移效率比除法高多了,而且位移3位相当于除了2的3次方也就是8

程序在单片机内设初始化之后会检测下ADC_Channel_7,也就是摇杆可能输出的最大电压
ADC_Channel_8和9用于检测垂直和水平方向上的摇杆位移,然后编码发送到USB总线上去

手标的USB HID设备在枚举之后基本只需要定时给主机发送4个字节的数据即可
BYTE1 BYTE2 BYTE3 BYTE4
BYTE1:
       |--bit7:   1   表示   Y   坐标的变化量超出-256   ~   255的范围,0表示没有溢出
       |--bit6:   1   表示   X   坐标的变化量超出-256   ~   255的范围,0表示没有溢出
       |--bit5:   Y   坐标变化的符号位,1表示负数,即鼠标向下移动
       |--bit4:   X   坐标变化的符号位,1表示负数,即鼠标向左移动
       |--bit3:     恒为1
       |--bit2:     1表示中键按下
       |--bit1:     1表示右键按下
       |--bit0:     1表示左键按下

有用的就是最后3个bit 其他的木有用
BYTE2 BYTE3分别是X和Y方向的移动速度,中间值为128(0x80), 1-127为左移动, 129-255为向右移动,值得注意的是0的时候也不移动,而且BYTE1的bit5 bit4没用的感觉?
BYTE4素鼠标滚轮 并木有用到


attachment icon JoyStickMouse.rar 2.57MB RAR 137次下载

程序代码:
参考资料
XXXXXXXXXXXXXXXXXXXt/xbl1986/article/details/17583551
XXXXXXXXXXXXXXXXXXXt/fjiale/article/details/7491932
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/blog/static/1177107320122296942641/
来自:电子信息 / 电子技术
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
20!Dopaminor
9年6个月前 IP:广东
780245
用情怀打osu略素昂
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
金坷居士
学者 机友 笔友
文章
170
回复
1711
学术分
11
2011/09/23注册,4个月6天前活动

怪哉!灵异的三极管电流流向! 这素一个在仿真的RCC电路,示波器上绿色的是集电极电流红色的是发射极电流。窝萌都知道发射姬电流素集电极电流和基极电流之和,所以讲道理发射极电流一定比集电极略大。可仿真结果刷了三观,Q1集电极电流一部分流经基极,然后流经Q2的C->E。

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}