STM32 USB例程改造为USB键盘

需积分: 9 7 下载量 159 浏览量 更新于2024-07-24 收藏 286KB PDF 举报
"圈圈改stm32usb例程,主要涉及STM32微控制器的USB功能改造,通过修改USB库中的示例代码,将USB摇杆鼠标转换为USB键盘。改造过程包括调整设备描述符和数据处理部分,具体集中在usb_desc.c文件中的设备描述符配置,特别是对 Vendor ID (VID) 和 Product ID (PID) 的修改,以确保设备的独特性和正确识别。" 在STM32应用开发中,USB功能的实现是一项关键任务,它允许微控制器与主机(如电脑)进行数据交换。在这个例子中,我们将基于万利学习板的USB摇杆鼠标示例代码,将其修改为USB键盘。首先,我们需要了解USB设备的工作原理,USB设备需要遵循一定的规范,包括设备描述符、配置描述符等,这些描述符定义了设备的类型、版本、最大传输包大小、制造商信息以及产品信息等。 在USB设备描述符中,`bLength`字段表示描述符的长度,`bDescriptorType`标识这是设备描述符。`bcdUSB`定义了支持的USB版本,例如这里的`0x0200`表示USB 2.0。`bDeviceClass`、`bDeviceSubClass`和`bDeviceProtocol`通常用于定义设备类别,但在这个示例中,它们都是0,意味着设备使用类驱动程序,由设备的接口类描述符来决定。 `bMaxPacketSize0`指示设备端点0(控制传输)的最大传输包大小,这里是64字节。`idVendor`和`idProduct`是设备的唯一标识,它们是由USB组织分配的16位值,对于这个示例,我们需要将它们更改为对应USB键盘的值。`bcdDevice`表示设备的固件版本。`iManufacturer`、`iProduct`和`iSerialNumber`分别指向描述制造商、产品和序列号的字符串索引。 修改`idVendor`和`idProduct`是为了避免与已注册的USB设备冲突,并使主机能够正确识别为USB键盘。如果要创建一个新的USB设备,应向USB组织申请唯一的VID和PID。在实际操作中,可以找到符合USB HID(Human Interface Device)类别的预定义VID和PID,因为USB键盘属于HID类设备。 接下来,除了设备描述符外,还需要修改配置描述符和接口描述符,以声明设备具有键盘接口。这可能涉及到修改`usb_hid.c`或类似的文件,设置正确的接口类、子类和协议。例如,对于USB键盘,接口类应该是`0x03`(HID),子类`0x01`(通用HID)和协议`0x01`(键盘)。 此外,数据处理部分也需要调整,原本的摇杆鼠标例程会处理鼠标输入,现在需要处理键盘扫描码并发送到主机。这部分可能涉及到解析按键状态,构建USB HID报告,并通过USB OUT端点发送给主机。 改写STM32的USB例程是一个涉及USB协议理解、描述符配置和数据处理逻辑修改的过程。通过以上步骤,我们可以成功将一个USB摇杆鼠标例程转变为USB键盘,使得STM32能作为一个虚拟键盘与主机通信。