项目:USB键盘和鼠标的复合设备

这篇具有很好参考价值的文章主要介绍了项目:USB键盘和鼠标的复合设备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 文章来源地址https://www.toymoban.com/news/detail-848061.html

      我们的复合设备使用一个物理设备就可以完成多个功能。

      使用复合设备同时完成USB键盘和鼠标功能,它的主要实现方式有两种,

第一个就是我们将多个设备描述符合并成一个,这个相对比较简单,我们只要根据相应的报告描述符处理数据就可以。

第二个就是使用多个接口来实现复合设备,每一个接口实现一个功能,这个做法比较复杂,能让我们更加深入的了解USB,所以这次我们使用这种做法来实现复合设备。

       我们的代码就使用STM32的官方例程,如下图:

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

我们会在这个官方例程游戏操作杆上进行修改,所有和USB键盘有关的项目都会使用“_KB”字符加以区分,没有的话就是鼠标的。Joystick_ReportDescriptor 这个报告描述符就是鼠标,Joystick_KB_ReportDescriptor这个报告描述符就是键盘。

第一步,我们将鼠标和键盘的报告描述符添加进去。

原来的如下图:

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

现在增加鼠标和报告描述符:

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

然后我们报告描述符的长度也要改一下

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

还要记得extern声明一下

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

第二步,我们修改完报告描述符以后就是修改配置描述符,

首先就是 接口增加到两个,bNumInterfaces 的接口值修改成0x02,然后配置描述符的总长度从34增加到66 JOYSTICK_SIZ_CONFIG_DESC

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

然后还要增加一个接口描述符(HID描述符和端点描述符)端点1用给鼠标  端点2用给键盘

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

第三步就是复合设备需要相应总线枚举,我们的主机首先要对设备进行复位,所以会进入Joystick_Reset函数中,加上键盘的端点2的初始化

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

第四步,我们的复合设备是两个接口,每个接口就是对应一个HID设备类,因此我们的主机必须对每个接口获取相应的HID描述符与报告描述符,那么怎么样提交这些描述符的数据呢?根据之前对控制传输的分析,设备必须在usb_prop.c源文件中预先定义ONE_DESCRIPTOR结构体变量对“需要提交的描述符数据数组”定位的那些变量,如下图:

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

第五步就是把发送数据的一些应用层函数还有回调函数加上去。如下图都是要改的地方,我都截图框出来。

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

主要就是按键 ,发送的应用层逻辑编写,还有按键的初始化,最后这个一定要全部再回顾一遍,特别是枚举 初始化 数据发送过程。然后其实这个项目还能扩展一下,后面有空我还会优化的,如果有朋友看到这里可以自己试试。

第一个就是可以自己做一个矩阵扫描

第二个就是实现全键无冲,我们现在是键盘最多只能发送六个数据,全键无冲就可以发送多个

第三个就是使用上位机发送数据下来控制MCU,可以使用下面这个软件模拟一下。

后面有时间我会把这三个拓展方向优化加进来,不过最近一个月都在搞USB也是乏味了hhhh,想换个口味了,准备下一个学习232,485,CAN总线吧。

项目:USB键盘和鼠标的复合设备,USB学习,单片机,笔记,学习

 

 

 

 

 

 

 

 

 

 

 

 

 

到了这里,关于项目:USB键盘和鼠标的复合设备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于XG24-EK2703A的BLE HID蓝牙键盘+鼠标复合设备功能开发(BLE+HID+FreeRTOS+Gecko SDK)

    👉 【Funpack3-1】基于XG24-EK2703A的BLE HID蓝牙键盘+鼠标复合设备 👉 Github: EmbeddedCamerata/XG24_ble_hid_keymouse 本项目基于Silicon Labs XG24-EK2703A开发板,通过HID协议实现了一个蓝牙键盘+鼠标复合设备,可通过按键实现上下翻页、发送字符功能。使用板载两个按键,当BTN0按下,向上翻页;

    2024年01月25日
    浏览(38)
  • Linux驱动开发(十四)---USB驱动开发学习(键盘+鼠标)

    《Linux驱动开发(一)—环境搭建与hello world》 《Linux驱动开发(二)—驱动与设备的分离设计》 《Linux驱动开发(三)—设备树》 《Linux驱动开发(四)—树莓派内核编译》 《Linux驱动开发(五)—树莓派设备树配合驱动开发》 《Linux驱动开发(六)—树莓派配合硬件进行字

    2024年02月08日
    浏览(36)
  • 51单片机学习笔记-4矩阵键盘

    [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。采用逐行或逐列的“扫描”,就可以读

    2024年02月06日
    浏览(38)
  • 51单片机学习--矩阵键盘、电子密码锁

    矩阵键盘的模块原理图: 功能:按下矩阵按键,在LCD上显示对应的数值。 采用模块化编程,在此只给出MatrixKey.c 和 main.c 两部分代码 这里要注意必须先判断KeyNum是否为0,否则while不断循环会不断显示0,导致看不到按下按钮显示的数字 要利用写好的矩阵键盘来制作一个密码锁

    2024年02月16日
    浏览(38)
  • STM32单片机学习3--STM32控制键盘

    单片机型号:STM32F103C8T6 开发环境:Keil5 4种输入模式 上拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平(与Vdd相连的为上拉电阻); 下拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为0,低电平(与Vss相连的为下拉电

    2024年02月10日
    浏览(41)
  • 【蓝桥杯_学习_51单片机】矩阵键盘 状态机法

    一.基础知识 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态 矩阵键盘和独立按键一样,也需要进行消抖处理! 于此补充一下抖动的含义: 对于机械开关,当机械触点断开、闭合时,

    2023年04月09日
    浏览(39)
  • 手把手教你使用USB的CDC+MSC复合设备(基于stm32f407)

      最近对usb有点兴趣,感觉挺好玩的,于是买了本圈圈大神的经典著作-圈圈教你玩USB,里面使用51单片机+usb芯片对usb的基本知识潺潺道来,做了十个左右的常用案例实验,很有趣,建议大家看看。   趁热打铁,拿身边的开发板来练练手,探索一下复合设备的好玩方便的

    2024年02月13日
    浏览(43)
  • Android 9.0 禁止usb键盘和usb鼠标挂载

    在9.0的系统产品开发中,对于系统中usb鼠标和usb键盘的等外设输入设备挂载处理,系统是在inputflinger模块中处理的,在产品的需求中对于外设输入设备的usb鼠标和usb键盘的挂载是禁用的,所以需要从挂载入手,禁止挂载usb鼠标和usb键盘 在android系统中是由各个子系统分工协作

    2024年02月09日
    浏览(32)
  • 蓝桥杯单片机学习日记3-矩阵键盘的使用,线反转法,三步消抖,按键长按与短按

    此片文章用于记录蓝桥杯单片机的学习 篮球杯单片机上的矩阵按键原理图如下:   使用矩阵键盘时,要将跳线帽J5跳至KBD模式。   值得注意的是,若开发板上的单片机使用的为STC15,那么以上原理图适用。如果单片机为IAP15,则在上述原理图中,要将P36换成P42,P37换成P44。  

    2023年04月10日
    浏览(36)
  • 教你STM32做USB鼠标、键盘

    使用CubeMX软件傻瓜式的配置,一键生成USB的HID驱动。 ①、选择相对应的芯片  ②、配置时钟和Debug和debug      ③、配置USB    ④、生成代码          最好把这个也勾上,勾上以后每个外设配置不再都给你塞到main.c里,而是建一个.c.h,这样感觉舒服多了         USB协议

    2024年01月23日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包