收藏官网首页
查看: 75746|回复: 94

秒秒钟学会STM32 USB HID复合设备开发,键盘、鼠标、游戏设备

 

321

主题

1054

帖子

4440

积分

论坛元老

Rank: 8Rank: 8

积分
4440
QQ
发表于 2017-2-20 20:10:06 | 显示全部楼层 |阅读模式
汉枫LPB120模块
本帖最后由 bigfanofloT 于 2017-5-31 12:27 编辑

严 正 声 明:本文出自机智云开发者社区,转载请注明出处,http://club.gizwits.com/thread-4986-1-1.html
Copyright@2017 bigfanofloT


视频:
QQ飞车测试:
http://player.youku.com/player.php/sid/XMjUyOTY3NDkwOA==/v.swf
坦克世界测试:
http://player.youku.com/player.php/sid/XMjUyOTY5NTEyNA==/v.swf
硬件:带USB控制器的STM32都可以,我这里使用的是Nucleo-L476RG,芯片是STM32L476RG,支持USB2.0全速模式,其中
PA12---->USB_DP
PA11---->USB_DM
软件:使用STM32CubeMX配置
直接用USB线连接到电脑USB即可,按照USB规范,USB线里面的绿线为DP(D+),白线为DM(D-),全速设备是要在DP线加上拉1.5K电阻的,由于

USB HID设备数据格式,参考如下:
对于单个设备:
鼠标发送给PC的数据每次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表示左键按下  ;
BYTE2 -- X坐标变化量,与byte的bit4组成9位符号数,负数表示向左移,正数表右移。用补码表示变化量;  
BYTE3 -- Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量 ;
BYTE4 -- 滚轮变化。
BYTE1的4-7全为0的时候,BYTE2 BYTE3的正负表示鼠标移动方向 。
键盘发送给PC的数据每次8个字节 :
BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 BYTE8
定义分别是:
BYTE1 --
       |--bit0:   Left Control是否按下,按下为1  ;
       |--bit1:   Left Shift  是否按下,按下为1  ;
       |--bit2:   Left Alt    是否按下,按下为1  ;
       |--bit3:   Left GUI    是否按下,按下为1 ;
       |--bit4:   Right Control是否按下,按下为1 ;  
       |--bit5:   Right Shift 是否按下,按下为1  ;
       |--bit6:   Right Alt   是否按下,按下为1  ;
       |--bit7:   Right GUI   是否按下,按下为1  ;
BYTE2 -- 暂不清楚,有的地方说是保留位 ;
BYTE3--BYTE8 -- 这六个为普通按键 ;


上个图吧:
USB复合设备开发.png
11.png
22.png
33.png









1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

321

主题

1054

帖子

4440

积分

论坛元老

Rank: 8Rank: 8

积分
4440
QQ
 楼主| 发表于 2017-5-1 08:12:58 来自手机 | 显示全部楼层
fearless 发表于 2017-4-23 20:27
楼主成功发送鼠标和键盘的指令么?还是说只是电脑识别到了而已。求回复

看视频效果就知道了

0

主题

2

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2017-5-21 14:13:31 | 显示全部楼层
希望是用的STM32L4的硬件I2C ,我在F1 2 4 7 L0 L1 上都用硬件I2C驱动了MPU6050 9150 等等,就差L4上面实现了

0

主题

1

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2017-3-7 17:25:53 | 显示全部楼层
很不错啊               

1

主题

2

帖子

40

积分

新手上路

Rank: 1

积分
40
发表于 2017-2-20 20:21:55 | 显示全部楼层
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢

0

主题

1

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2017-2-20 21:22:10 | 显示全部楼层
初学者来学习。

3

主题

13

帖子

404

积分

中级会员

Rank: 3Rank: 3

积分
404
发表于 2017-2-20 23:24:32 | 显示全部楼层
谢谢,先学习学习!

0

主题

13

帖子

451

积分

中级会员

Rank: 3Rank: 3

积分
451
发表于 2017-2-21 08:46:26 | 显示全部楼层
校园创客福利
好贴 学习了

0

主题

2

帖子

30

积分

新手上路

Rank: 1

积分
30
发表于 2017-2-21 09:10:18 | 显示全部楼层
好东西,学习学习!

0

主题

3

帖子

25

积分

新手上路

Rank: 1

积分
25
发表于 2017-2-21 09:57:47 | 显示全部楼层
xxxx谢谢谢谢谢谢

1

主题

9

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2017-2-21 14:34:35 | 显示全部楼层
还是要了解一下usb的各个描述符

0

主题

2

帖子

36

积分

新手上路

Rank: 1

积分
36
发表于 2017-2-22 16:57:34 | 显示全部楼层
免费使用STM32、APP自动代码生成工具
作为年轻人,我要学习一个

0

主题

4

帖子

44

积分

新手上路

Rank: 1

积分
44
发表于 2017-2-25 13:08:14 | 显示全部楼层
真希望多些这样帖子

0

主题

1

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2017-2-26 01:01:20 | 显示全部楼层
学习一下多个USB设备复合设备

321

主题

1054

帖子

4440

积分

论坛元老

Rank: 8Rank: 8

积分
4440
QQ
 楼主| 发表于 2017-2-26 10:07:18 | 显示全部楼层

大神早
1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

0

主题

8

帖子

356

积分

中级会员

Rank: 3Rank: 3

积分
356
发表于 2017-2-26 13:45:29 | 显示全部楼层
校园创客福利
酷酷酷酷酷酷酷酷

0

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2017-2-26 21:53:07 | 显示全部楼层
学习一下多个USB设备复合设备

16

主题

69

帖子

4889

积分

论坛元老

Rank: 8Rank: 8

积分
4889
发表于 2017-2-26 21:57:50 | 显示全部楼层
厉害了我的哥
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2022 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表