最近在做STM32F407的USB通信,遇到了一些问题,插入设备后,可以检测到设备插入,也可以获取到设备的设备描述符、配置描述符、接口描述符等,在运行到HOST_CLASS_REQUEST状态后程序卡死在了\Libraries\STM32_USB_HOST_Library\Core\src\usbh_core.c 的第607行的case :CTRL_SETUP_WAIT里面。程序在反复调用这个函数后URB_Status = HCD_GetURB_State(pdev , phost->Control.hc_num_out);
总是得到URB_IDLE状态,而不是URB_DONE状态。但是通过另外一块STM32F405与设备通信,通信完全正常,两块开发板的USB引脚都是PA11、PA12,但是不知道F407为什么就是不行。已经调试好几天了,没有任何进展,希望大家可以帮帮忙,非常感谢!
以上是转载的问题,和我现在遇到的一模一样,但我的是随机性的,网上很多人反映这个问题,一直没有官方出来给个说法,原子的方案是做个超时重新枚举,枚举成功后单向通讯(只接收键码)基本不出问题了,但发送不行,比如发个指令给键盘亮灯。随机死。测试一百次以内,绝对死。。严重怀疑st的东西没做老化就上市了
|