我用的是STM32F407 使用STM32FCUBE 产生的工程 起重 USB_OTG_HS 选择的是 Host Only SOF 和 VBUS 都没勾选 USB_OTG_FS 选择的是 DEVICE_ONLY SOF 和 VBUS 都没勾选 然后 middleware USB_HOST 选择的是Virtual Port Com 但是生成代码后 就死在 void Error_Handler(void) 我一级一级跟踪下来, MX_USB_OTG_FS_PCD_Init(); if (HAL_PCD_Init(&hpcd_USB_OTG_FS) != HAL_OK) if (USB_CoreInit(hpcd->Instance, hpcd->Init) != HAL_OK) ret = USB_CoreReset(USBx); 最后发现是USB 寄存器 一直不对 static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx) { uint32_t count = 0U; /* Wait for AHB master IDLE state. */ do { if (++count > 200000U) { return HAL_TIMEOUT; } } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U); /* Core Soft Reset */ count = 0U; USBx->GRSTCTL |= USB_OTG_GRSTCTL_CSRST; do { if (++count > 200000U) { return HAL_TIMEOUT; } } while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST); return HAL_OK; } 请问哪位大侠知道是什么原因么 |
建议你先基于现有cube例程做些验证测试。
\Repository\STM32Cube_FW_F4_V1.26.1\Projects\STM324x9I_EVAL\Applications\USB_Host