(6)STM32 USB设备开发-USB键鼠一体设备

例程:STM32USBdevice: 基于STM32的USB设备例子程序 - Gitee.com

键鼠一体的应用场景如集合器,比如我们在网上购买的键鼠套装,是将2.4G集合到一个USB接收器中,这个USB接收器对于PC来说就是一个键鼠一体设备。或者我们可以自制一个带有鼠标摇杆的键盘等场景。

键鼠一体实现方式是在报告描述符中描述两个设备,即键盘设备和鼠标设备,报告描述就是将键盘描述和鼠标描述何为一个,那么PC如何区分这两个报告呢?通过REPORT_ID来区分,下面展示一下使用DT工具生成的报告描述符。

其中键盘REPORT_ID为1,鼠标REPORT_ID为2.在软件发送消息时,使用 REPORT_ID 作为报告的第一个字节,可以让主机准确区分不同类型的报告。也就是我们需要在额外的报告消息中添加第一个字节为REPORT_ID即可。

我们在keyboard代码的基础上进行修改。

前置操作步骤可以看我上一篇关于keyboard的教程,这篇我们之列出差异。

首先我们需要将上面的报告描述符添加到代码Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c中,

__ALIGN_BEGIN static uint8_t HID_KEYMOUSE_ReportDesc[HID_KEYMOUSE_REPORT_DESC_SIZE]  __ALIGN_END = {
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x06,                    // USAGE (Keyboard)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x85, 0x01,                    //   REPORT_ID (1)
    0x05, 0x07,                    //   USAGE_PAGE (Keyboard)
    0x19, 0xe0,                    //   USAGE_MINIMUM (Keyboard LeftControl)
    0x29, 0xe7,                    //   USAGE_MAXIMUM (Keyboard Right GUI)
    0x15, 0x00,                  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值