2023年3月12学习笔记
1.鼠标设备报表描述符介绍
该函数在usbd_hid.c文件中第 318行
__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
{
0x05, 0x01, //USAGE_PAGE(Generic.Destop) 用途_页(通用 桌面)
0x09, 0x02, //USAGE(Mouse) 用途(鼠标)
0xA1, 0x01, //COLLECTION(Application) 开集合(应用软件)
0x09, 0x01, //USAGE(Pointer) 用途(指针)
0xA1, 0x00, //COLLECTION(Physical) 开集合(物理)
0x05, 0x09, //USAGE_PAGE(Button) 用途_页(按钮)
0x19, 0x01, //USAGE_MINIMUM(Button1) 用途_最小值(按钮1)
0x29, 0x03, //USAGE_MAXIMUM(Button3) 用途_最大值(按钮3) 最小值和最大值代表鼠标有几个按键
0x15, 0x00, //LOGICAL_MINIMUM(0) 逻辑_最小值(0)
0x25, 0x01, //LOGUCAL_MAXIMUM(1) 逻辑_最大值(1) 最小值和最大值代表鼠标按下和抬起
0x95, 0x03, //REPORT_COUNT(3)bit 报告_数量(3)
0x75, 0x01, //REPORT_SIZE(1) 报告_大小(1)
0x81, 0x02, //INPUT (Dala,Var,Abs) 输入(过程、Var、绝对值)
0x95, 0x01, //REPORT_COUNT (1) 5 bit 报告_计数(1)5位
0x75, 0x05, //REPORT_SIZE (5) 报告_大小(5)
0x81, 0x01, //INPUT (Cnst,Var,Abs) 输入(Cnst、Var、绝对值)
0x05, 0x01, //USAGE_PAGE (Generic Desktop) 用途_页(通用 桌面)
0x09, 0x30, //USAGE (X) 用途(x)
0x09, 0x31, //USAGE (Y) 用途(y)
0x09, 0x38, //LOGICAL MINIMUM (-127) 逻辑最小值(-127)
0x15, 0x81, //LOGICAL_MAXIMUM (127) 逻辑最大值(127)
0x25, 0x7F, //REPORT_SIZE (8) 报告_大小(8)
0x75, 0x08, //REPORT_SIZE (8) 报告_大小(8)
0x95, 0x03, //REPORT_COUNT (3) 报告数组(3)
0x81, 0x06, //INPUT (Data,Var,Rel)
0xC0, 0x09,
0x3c, 0x05,
0xff, 0x09,
0x01, 0x15,
0x00, 0x25,
0x01, 0x75,
0x01, 0x95,
0x02, 0xb1,
0x22, 0x75,
0x06, 0x95,
0x01, 0xb1,
0x01, 0xc0 // END_COLLECTION 关集合
};
2.USBD_HID_SendReport(&hUsbDeviceFS,(uint8_t *)report,4);
这行代码使用USB HID类通过连接到微控制器的USB设备发送一个4个字节的HID报告。
3.extern USBD_HandleTypeDef hUsbDeviceFS;
定义USB结构体句柄