STM32-USB-HID-device-MOUSE&keyboard(的一个关键参数)
网上已经有很多人都实现了一个USB复合多个设备。我也想做一个,目的是为了复活X220键盘并且增加一个轨迹球鼠标。因为我不喜欢双手离开键盘。
一些文献相对通俗或者细致的教了USB协议HID报文格式等
https://blog.csdn.net/zhoutaopower/article/details/82469665
https://blog.csdn.net/Britripe/article/details/111662665
什么是管道什么是管道的“端点”说通俗点是管子必然有“眼儿”。
什么是设备什么是 使用方式,使用方式扩展描述页。等等。
但我估计写完这篇文章我很快就会忘掉。除非——我逼自己再做点什么关于USB的东西。
当然还有一些文献手把手的教我怎么建立一个MX工程
https://blog.csdn.net/qq_21566881/article/details/127926484
最难能可贵的是一些具体到柴米油盐的的参考文献
虽然格式说的不清楚,但是人家代码是可以参考的。
https://blog.51cto.com/u_12956289/2917177
https://www.usbzh.com/article/detail-487.html:
https://cloud.tencent.com/developer/article/1652367
以上三篇文章都讲了通过,HID描述表的符合 来增加 鼠标设备到键盘设备中。这里不赘述。
鼠标键盘的复合方式有很多,一种是多interface的,一种是符合报文的。在参考文献中有提到。我懒而且笨所以选择后者。学会了另一种其实就更厉害了。可以做更复杂的复合。
但是很多帖子只把最难的地方给写了。我在参考学习的时候还有一个地方没改以至于虽然枚举成功了,但是却不能成功移动复合的鼠标。
/重点来了***/
关键就在于 "usbd_customhid.h"文件中的 输入(输入:是对于PC而言的,方向就是键盘到主机)
#define CUSTOM_HID_EPIN_SIZE 0x15U //02U
/重点走了***/
这里我想到要改了,键盘report17字节,鼠标4字节但,两个report都只用了不带头的16+3所以算成了0x13,于是也不好用。看到这篇(抱歉找不到了)以后他(他的cube模版可能比较老,名称都不一样但是咱前面学了点基础,指导EP是啥意思,哈哈哈哈哈,让我得瑟一会儿)改成了0x40,但,给了我信心。我就改成0x40,结果未知设备了。于是又改成0x20这回可以工作了。但是这个数字具体怎么算我现在也不是很清楚。但是 我按照带有头的计算方法就是17+4 = 0x15 。算出来是可以用的。
好了啰嗦到这。后续全都做好了以后,可能会发出来。或者update这篇帖子。