STM32
直播中

贾埃罗

7年用户 1605经验值
私信 关注
[问答]

stm32f429 USB Host HID键盘枚举成功读取键值失败的原因?怎么解决?

求助大神,手上一块STM32f429的板子,作为USB host连接USB键盘,使用cubemx生成工程文件,在主循环内添加键值处理程序,现在的问题是通过串口打印调试信息显示,USB枚举成功,但是在读取键盘键值的时候不成功,通过打断点发现程序在运行到k_pinfo = USBH_HID_GetKeybdInfo(phost)这一句时,返回为零,进一步查找USBH_HID_KeybdDecode这个函数返回USBH_FAIL。使用USB FS和USB HS的现象完全一样,可以枚举但不能读取键盘键值。求助有过类似经验的朋友指点一二。

回帖(1)

赵群山

2024-4-28 10:26:43
这个问题是因为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这个状态,问题解决。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分