图片镇楼 目前楼主正在用这个东西打坦克世界
因为这个手标没右键 所以有点蛋疼 目前还木有干掉过敌人orz
STM32做HID(人机交互设备)非常方便,自带USB口,还有官方的按键鼠标历程
本程序就是通过修改官方例子而来,删除了无用代码,极其精简
这是电路图,配上STM32最小系统板使用即可
摇杆输出的是模拟电压,因此用到了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素鼠标滚轮 并木有用到
JoyStickMouse.rar
2.57MB
RAR
137次下载
程序代码:
参考资料
XXXXXXXXXXXXXXXXXXXt/xbl1986/article/details/17583551XXXXXXXXXXXXXXXXXXXt/fjiale/article/details/7491932XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/blog/static/1177107320122296942641/
200字以内,仅用于支线交流,主线讨论请采用回复功能。