USB HID实战:将设备模拟为鼠标

4星 · 超过85%的资源 需积分: 18 7 下载量 199 浏览量 更新于2024-07-29 收藏 455KB PDF 举报
"USB HID 学习实例教程,讲解如何将USB设备枚举为鼠标。教程基于EASYUSB51PROGRAMER学习板,通过修改设备的描述符来改变设备类型,使其被识别为鼠标。主要涉及USB设备描述符的配置,特别是设备类代码的更改,以实现从'测试设备类'到'HID类'的转换。" 在USB设备开发中,当设备插入到计算机时,操作系统会依据设备提供的描述符来识别设备类型,并加载相应的驱动程序。在本实例中,原有的固件驱动定义设备为"测试设备类",这导致了PC需要用户安装自定义驱动才能正常工作。为了使设备被识别为鼠标,我们需要修改设备描述符中的相关字段。 USB设备描述符是设备与主机通信的关键,它包含了设备的基本信息,如设备类型、版本、制造商信息等。在Descriptor.c文件中,设备描述符通常是一个结构体,包含多个字段。在本例中,我们需要关注的是设备类代码(Class Code)这一字段。初始设置中,设备类代码是`USB_CLASS_CODE_TEST_CLASS_DEVICE`,即测试设备类。 为了将设备枚举为鼠标,我们需要将其改为`USB_CLASS_HID`,这是HID(Human Interface Device)类的标识,它包含了键盘、鼠标和其他人机交互设备。同时,还需要确保设备子类(Subclass Code)和协议(Protocol Code)与鼠标的要求相匹配,通常是`0`和`1`分别代表无子类和鼠标协议。 修改后的设备描述符结构体应如下所示: ```c // 设备描述符 code USB_DEVICE_DESCRIPTOR DeviceDescr = { sizeof(USB_DEVICE_DESCRIPTOR), // 设备描述符长度 USB_DEVICE_DESCRIPTOR_TYPE, // 设备描述符类型 0x00, 0x01, // 协议版本 USB_CLASS_HID, // HID设备类 0, 0, // 设备子类和协议 EP0_PACKET_SIZE, // 端点0最大数据包大小 // ... }; ``` 完成上述修改后,重新编译并烧录固件到EASYUSB51PROGRAMER学习板上,当板子插入电脑时,系统会自动识别其为鼠标设备,无需额外的驱动支持。这使得USB设备开发人员能够快速理解并实践USB HID设备的枚举过程,为创建自己的USB HID设备如鼠标、键盘等奠定了基础。