这一章在干嘛?
USB 鼠标键盘实验:USB HID 类、Boot Mouse/Keyboard 子类、报表描述符。从此 MCU 可以当鼠标或键盘。
41.1 USB 鼠标键盘简介
USB HID(Human Interface Device)= 人机接口设备类。
F407 通过 OTG FS + 中间件可作 HID:
- Mouse:Boot Mouse 子类,发送 4 字节(按键 + X/Y 偏移);
- Keyboard:Boot Keyboard 子类,发送 8 字节(修饰键 + 保留 + 6 个按键码)。
原书图 41.1.1:HID 报表描述符示例
Boot 子类:BIOS 不需要装驱动就能识别,适合做启动盘、维护工具。
41.2 硬件设计
USB OTG FS 接口即可。
41.3 程序设计
41.3.1 CubeMX 配置
- USB_DEVICE → Class = Human Interface Device (HID)
- 选 Mouse / Keyboard
41.3.2 关键代码(鼠标)
typedef struct {
uint8_t buttons;
int8_t x;
int8_t y;
int8_t wheel;
} HID_MOUSE_Report;
HID_MOUSE_Report rep = {0};
rep.x = 5; rep.y = 0;
USBD_HID_SendReport(&hUsbDeviceFS, &rep, sizeof(rep));
原书图 41.3.2.1:USB 鼠标报表数据格式
原书图 41.3.2.2:USB 键盘报表数据格式
41.4 下载验证
按 KEY0/KEY1 → 屏幕光标移动;按 KEY_UP → 发送「Enter」键入字符。
键码:USB HID 键码不是 ASCII。例如「A」= 0x04,「Enter」= 0x28。
原书图 41.4.1:USB 键盘键码表
USB HID 是什么?
Human Interface Device,人机接口设备类。
Boot Mouse 报表数据多大?
4 字节(按键 + X + Y + 滚轮)。
「Enter」键的 USB HID 键码是?
0x28。