这个问题是因为ST的HAL库中的一个bug导致的,原因是在HID设备枚举之后程序会卡在Get_Report处,所以USBH_HID_Process这个函数会一直卡在HID_IDLE这里,不能进入下一个阶段,从而无法响应键盘的按键,解决方法也很粗暴,具体为打开USB库中的usbh_hid.c文件,找到函数USBH_HID_Process,修改如下:
HID_Handle->Init(phost);
// <---- add these lines, from here
HID_Handle->state = HID_SYNC; // skip HID_IDLE state
break;
// <---- to here
即:直接跳过HID_IDLE这个状态,问题解决。
这个问题是因为ST的HAL库中的一个bug导致的,原因是在HID设备枚举之后程序会卡在Get_Report处,所以USBH_HID_Process这个函数会一直卡在HID_IDLE这里,不能进入下一个阶段,从而无法响应键盘的按键,解决方法也很粗暴,具体为打开USB库中的usbh_hid.c文件,找到函数USBH_HID_Process,修改如下:
HID_Handle->Init(phost);
// <---- add these lines, from here
HID_Handle->state = HID_SYNC; // skip HID_IDLE state
break;
// <---- to here
即:直接跳过HID_IDLE这个状态,问题解决。
举报