102 lines
2 KiB
Text
102 lines
2 KiB
Text
由于STM32CubeMX配置HID协议时,只能配默认值,以下为需要修改的地方
|
||
|
||
|
||
|
||
|
||
|
||
/*
|
||
*更改HID_FS_BINTERVAL轮询时间,每1ms更新一次
|
||
*/
|
||
|
||
更改usbd_config.h文件:
|
||
|
||
原:
|
||
#define HID_FS_BINTERVAL 0xA //10ms
|
||
|
||
改为:
|
||
#define HID_FS_BINTERVAL 0x01 //1ms
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*
|
||
*更改usbd_hid鼠标报文,使鼠标可以发送最大6字节数据,保证x,y轴移动数据不丢包
|
||
*
|
||
*全部复制粘贴
|
||
*/
|
||
|
||
更改usbd_hid.h文件:
|
||
|
||
#define HID_EPIN_ADDR 0x81U
|
||
#define HID_EPIN_SIZE 0x06U //最大数据为6Byte
|
||
|
||
#define USB_HID_CONFIG_DESC_SIZ 34U
|
||
#define USB_HID_DESC_SIZ 9U
|
||
#define HID_MOUSE_REPORT_DESC_SIZE 69U
|
||
|
||
#define HID_DESCRIPTOR_TYPE 0x21U
|
||
#define HID_REPORT_DESC 0x22U
|
||
|
||
#ifndef HID_HS_BINTERVAL
|
||
#define HID_HS_BINTERVAL 0x04U
|
||
#endif /* HID_HS_BINTERVAL */
|
||
|
||
#ifndef HID_FS_BINTERVAL
|
||
#define HID_FS_BINTERVAL 0x01U
|
||
#endif /* HID_FS_BINTERVAL */
|
||
|
||
#define HID_REQ_SET_PROTOCOL 0x0BU
|
||
#define HID_REQ_GET_PROTOCOL 0x03U
|
||
|
||
#define HID_REQ_SET_IDLE 0x0AU
|
||
#define HID_REQ_GET_IDLE 0x02U
|
||
|
||
#define HID_REQ_SET_REPORT 0x09U
|
||
#define HID_REQ_GET_REPORT 0x01U
|
||
|
||
|
||
|
||
更改usbd_hid.c文件:
|
||
__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
|
||
{
|
||
0x05, 0x01,
|
||
0x09, 0x02,
|
||
0xA1, 0x01,
|
||
0x05, 0x09,
|
||
0x19, 0x01,
|
||
0x29, 0x05,
|
||
0x15, 0x00,
|
||
0x25, 0x01,
|
||
0x95, 0x05,
|
||
0x75, 0x01,
|
||
0x81, 0x02,
|
||
0x95, 0x01,
|
||
0x75, 0x03,
|
||
0x81, 0x03,
|
||
|
||
0x05, 0x01,
|
||
0x09, 0x30,
|
||
0x09, 0x31,
|
||
0x16, 0x00, 0x80,
|
||
0x26, 0xFF, 0x7F,
|
||
0x36, 0x00, 0x80,
|
||
0x46, 0xFF, 0x7F,
|
||
0x75, 0x10,
|
||
0x95, 0x02,
|
||
0x81, 0x06,
|
||
|
||
0x09, 0x38,
|
||
0x15, 0x81,
|
||
0x25, 0x7F,
|
||
0x35, 0x81,
|
||
0x45, 0x7F,
|
||
0x75, 0x08,
|
||
0x95, 0x01,
|
||
0x81, 0x06,
|
||
|
||
0xC0
|
||
};
|
||
|