初级会员
- 积分
- 66
- 金钱
- 66
- 注册时间
- 2019-5-17
- 在线时间
- 26 小时
|
5金钱
用STM32F429做主机,读写U盘,执行void USBH_Process(USB_OTG_CORE_HANDLE *pdev , USBH_HOST *phost)这个函数的时候,每次到了 case HOST_ENUMERATION: /* Check for enumeration status */
if ( USBH_HandleEnum(pdev , phost) == USBH_OK)
。。。
这一步都返回USBH_BUSY,时钟分频也改过了,主频改为168M,USB_FS的时钟是48M,debug时用RCC_GetClocksFreq读取主频是对的,这个结构体读不到USB的频率,外部晶振25M。
#define PLL_M 25
#define PLL_Q 7
#define PLL_R 7
#define PLL_P 2
进一步进这个函数,
static USBH_Status USBH_HandleEnum(USB_OTG_CORE_HANDLE *pdev, USBH_HOST *phost)
{
。。。。。
if ( USBH_Get_DevDesc(pdev , phost, 8) == USBH_OK)
再进USBH_Get_DevDesc,
USBH_Status USBH_Get_DevDesc(USB_OTG_CORE_HANDLE *pdev,
USBH_HOST *phost,
uint8_t length)
{
USBH_Status status;
if((status = USBH_GetDescriptor(pdev,
phost,
USB_REQ_RECIPIENT_DEVICE | USB_REQ_TYPE_STANDARD,
USB_DESC_DEVICE,
pdev->host.Rx_Buffer,
length)) == USBH_OK)
{
/* Commands successfully sent and Response Received */
USBH_ParseDevDesc(&phost->device_prop.Dev_Desc, pdev->host.Rx_Buffer, length);
}
return status;
}
这里status返回总是USBH_BUSY... 线,板子,都换过了。。。好几天了,头疼,有高人知道有什么原因可能造成这个问题嘛
|
|