关于STM32的USB设备库DIY机械键盘( 六 )


这种映射为bit方式的报告描述符如下:
0x05, 0x01,// Usage Page (Generic Desktop),0x09, 0x06,// Usage (Keyboard),0xA1, 0x01,// Collection (Application),// bitmap of modifiers0x75, 0x01,//Report Size (1),0x95, 0x08,//Report Count (8),0x05, 0x07,//Usage Page (Key Codes),0x19, 0xE0,//Usage Minimum (224),0x29, 0xE7,//Usage Maximum (231),0x15, 0x00,//Logical Minimum (0),0x25, 0x01,//Logical Maximum (1),0x81, 0x02,//Input (Data, Variable, Absolute), ;Modifier byte// LED output report0x95, 0x05,//Report Count (5),0x75, 0x01,//Report Size (1),0x05, 0x08,//Usage Page (LEDs),0x19, 0x01,//Usage Minimum (1),0x29, 0x05,//Usage Maximum (5),0x91, 0x02,//Output (Data, Variable, Absolute),0x95, 0x01,//Report Count (1),0x75, 0x03,//Report Size (3),0x91, 0x03,//Output (Constant),// bitmap of keys0x95, 0x78,//Report Count (120),0x75, 0x01,//Report Size (1),0x15, 0x00,//Logical Minimum (0),0x25, 0x01,//Logical Maximum(1),0x05, 0x07,//Usage Page (Key Codes),0x19, 0x00,//Usage Minimum (0),0x29, 0x77,//Usage Maximum (),0x81, 0x02,//Input (Data, Variable, Absolute),0xc0// End Collection/* 57 */
数据包的第一个字节仍旧表示控制按键 。
四 STM32的DFU升级方式
这里以后专门出一篇文章来写吧,和本文的关系不大,主要是方便没有烧写工具的朋友可以自己更改代码,做一把自己想要的键盘 。
DFU很简单,相比于HID,DFU,USB更多的则是用来做MSC设备,当然,对于电子工程师来说,更有用的设备当然是CDC设备啦 。这样可以节省一颗CH340的芯片 。仅仅只是调试时使用,一颗CH340未免太浪费,好歹几块钱一颗呢 。
后记
犹记得大学毕业时,找工作面试,网龙网络的一个工程师问我,“++a和a++有什么区别?“现在想来,当初真是初生牛犊不怕虎,什么都不懂,想着岗位高薪就去面试 。
毕业后工作好些年,遇到了很多的良师益友,从他们身上学到了不少东西,这里肯定要感谢他们的分享与不吝赐教 。所以我觉得学会了,理解了,就拿出来大家一起分享 。正如,文明的进步依靠的是不同文明之间的碰撞与融合 。
我后面没有附上这次DIY键盘的源代码,这是因为我在代码中使用了很多的全局变量,没有用结构体去封装 。使用了很多的if else语句,CPU运行效率低下 。也许它实现了一个键盘的功能,但真不能算一个合格的工程 。其实代码这些东西都可以参考参考tmk方案或者qmk方案,里面的有一些代码都写的很精简而有效率 。这两个方案在上是开源的 。
这篇文章,断断续续写了快一个月,很多是删了重写的,旨在为了让更多的人都能看懂 。不想因为我的随意,而使这篇文章而变得晦涩难懂 。如果我写的大家都看不懂,那简直是一坨狗屎,也就失去了分享的意义 。
【关于STM32的USB设备库DIY机械键盘】一晃已经进入自己的第26个年头了,可我依旧是一条年轻的小咸鱼,谨以此纪念自己的25岁生日,生日快乐,老藏 。