
求助大神,手上一块stm32f429的板子,作为USB host连接USB键盘,使用cubemx生成工程文件,在主循环内添加键值处理程序,现在的问题是通过串口打印调试信息显示,USB枚举成功,但是在读取键盘键值的时候不成功,通过打断点发现程序在运行到k_pinfo = USBH_HID_GetKeybdInfo(phost)这一句时,返回为零,进一步查找USBH_HID_KeybdDecode这个函数返回USBH_FAIL。使用USB FS和USB HS的现象完全一样,可以枚举但不能读取键盘键值。求助有过类似经验的朋友指点一二。 |
ART-PI H750-USB-MSC 设备描述符异常
stm32h743 usbh msc 读写 u盘 新购买的 u盘只能识别到但不能进行读写 ?
stm32哪个系列芯片支持2个USB,主设备,且usb可以支持标准的uvc协议,哪里可以下载usb开发库
新手小白,SMT32 TP Tool Windows无法安装驱动怎么处理
如何用c#使用ST25R3911DISCOComm.dll来读取和写入NDEF区的数据,需要相关例程,感谢各位大佬拯救一下我啊!????
USBx配置有哪些小的需要注意的细节?
H743ZIT6 USB虚拟串口 CDC电脑无法识别(获取描述符失败)
STM32F407的高速USB,采用的是虚拟串口方式,VCP驱动有linux系统的吗
STM32H533的USB使用问题
stlink 串口驱动安装前面有叹号软件里无法找到
点评
评分
查看全部评分
重新回复这个问题,今天在google上终于找到了这个问题的解决方法,出自ST的英文社区,这个问题是因为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这个状态,问题解决。
大致原因是用于boot系统的键盘必须执行Get_Report,而日常使用的键盘其内部芯片是不支持Get_Report这个功能的,更详细的原因这里就不列出了,感兴趣的朋友可参阅下面的链接,里面有说明。
http://community.st.com/thread/13529