电子商城网站开发公司,网站建设公司南宁,什么是网站运营推广,10套免费ppt模板我们的复合设备使用一个物理设备就可以完成多个功能。 使用复合设备同时完成USB键盘和鼠标功能#xff0c;它的主要实现方式有两种#xff0c;
第一个就是我们将多个设备描述符合并成一个#xff0c;这个相对比较简单#xff0c;我们只要根据相应的报告描述符处理数据就可… 我们的复合设备使用一个物理设备就可以完成多个功能。 使用复合设备同时完成USB键盘和鼠标功能它的主要实现方式有两种
第一个就是我们将多个设备描述符合并成一个这个相对比较简单我们只要根据相应的报告描述符处理数据就可以。
第二个就是使用多个接口来实现复合设备每一个接口实现一个功能这个做法比较复杂能让我们更加深入的了解USB所以这次我们使用这种做法来实现复合设备。 我们的代码就使用STM32的官方例程如下图 我们会在这个官方例程游戏操作杆上进行修改所有和USB键盘有关的项目都会使用“_KB”字符加以区分没有的话就是鼠标的。Joystick_ReportDescriptor 这个报告描述符就是鼠标Joystick_KB_ReportDescriptor这个报告描述符就是键盘。
第一步我们将鼠标和键盘的报告描述符添加进去。
原来的如下图 现在增加鼠标和报告描述符 然后我们报告描述符的长度也要改一下 还要记得extern声明一下 第二步我们修改完报告描述符以后就是修改配置描述符
首先就是 接口增加到两个bNumInterfaces 的接口值修改成0x02然后配置描述符的总长度从34增加到66 JOYSTICK_SIZ_CONFIG_DESC 然后还要增加一个接口描述符HID描述符和端点描述符端点1用给鼠标 端点2用给键盘 第三步就是复合设备需要相应总线枚举我们的主机首先要对设备进行复位所以会进入Joystick_Reset函数中加上键盘的端点2的初始化 第四步我们的复合设备是两个接口每个接口就是对应一个HID设备类因此我们的主机必须对每个接口获取相应的HID描述符与报告描述符那么怎么样提交这些描述符的数据呢根据之前对控制传输的分析设备必须在usb_prop.c源文件中预先定义ONE_DESCRIPTOR结构体变量对“需要提交的描述符数据数组”定位的那些变量如下图 第五步就是把发送数据的一些应用层函数还有回调函数加上去。如下图都是要改的地方我都截图框出来。 主要就是按键 发送的应用层逻辑编写还有按键的初始化最后这个一定要全部再回顾一遍特别是枚举 初始化 数据发送过程。然后其实这个项目还能扩展一下后面有空我还会优化的如果有朋友看到这里可以自己试试。
第一个就是可以自己做一个矩阵扫描
第二个就是实现全键无冲我们现在是键盘最多只能发送六个数据全键无冲就可以发送多个
第三个就是使用上位机发送数据下来控制MCU可以使用下面这个软件模拟一下。
后面有时间我会把这三个拓展方向优化加进来不过最近一个月都在搞USB也是乏味了hhhh想换个口味了准备下一个学习232485CAN总线吧。