USB UM1021 USB主机HID
参考的UM1021手册,用的STM32_USB-Host-Device_Lib \USB_Host_Examples\HID例程。
插键盘使用,USBH_Process() 循环间隔小于3ms,按键盘,读到的字符正常。
当主循环加入延时后,USBH_Process() 循环间隔大于3ms,按键盘不能读到字符了。
大家有什么招可以解决 主循环时间间隔长,而USB-HID需要读取正确的键盘输入字符呢?
我估计原因是 《STM32F10xxx参考手册》 26.5.2 设备状态 描述的
挂起状态
OTG_FS控制器持续的检测USB线上的活动。在检测到3ms的USB空闲状态后,将产生早期挂起中断(OTG_FS_GINTSTS寄存器的ESUSP位),在3ms后产生挂起中断(OTG_FS_GINTSTS寄存器的USBSUSP位)确认挂起。设备状态寄存器的设备挂起位(OTG_FS_DSTS寄存器的SUSPSTS位)将自动置位,OTG_FS控制器进入挂起状态。
:):):):):) 网上写着要 周期性地发送SOF包,设备才不会挂起 观察HID_State状态发现USBH_HID_Handle函数,在时间间隔>3ms和<3ms时运行不同的条件。
正常运行: HID_SYNC ,后面循环 HID_GET_DATA , HID_POLL ,HID_POLL ,HID_POLL ,HID_POLL ,
而>3ms运行: HID_SYNC ,后面循环 HID_GET_DATA , HID_POLL ,HID_GET_DATA , HID_POLL , :):):):):):):)
页:
[1]