STM32
直播中

张宇

7年用户 1624经验值
私信 关注
[问答]

stm32cubemx配置了stm32h743的USB host,运行到第一个if下一步直接就跳到HardFault_Handler了,为什么?

用的STM32cubemx 版本是 6.4.0, 配置了stm32h743的USB host ,想往外发数据,所以调用了

USBH_CDC_Transmit(),但是在这个函数里运行到第一个if下一步直接就跳到

HardFault_Handler了,不知道为什么

USBH_StatusTypeDef  USBH_CDC_Transmit(USBH_HandleTypeDef *phost, uint8_t *pbuff, uint32_t length)
{
  USBH_StatusTypeDef Status = USBH_BUSY;
  CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef *) phost->pActiveClass->pData;

  if ((CDC_Handle->state == CDC_IDLE_STATE) || (CDC_Handle->state == CDC_TRANSFER_DATA))
  {
    CDC_Handle->pTxData = pbuff;
    CDC_Handle->TxDataLength = length;
    CDC_Handle->state = CDC_TRANSFER_DATA;
    CDC_Handle->data_tx_state = CDC_SEND_DATA;
    Status = USBH_OK;

#if (USBH_USE_OS == 1U)
    phost->os_msg = (uint32_t)USBH_CLASS_EVENT;
#if (osCMSIS < 0x20000U)
    (void)osMessagePut(phost->os_event, phost->os_msg, 0U);
#else
    (void)osMessageQueuePut(phost->os_event,  phost->os_msg, 0U, NULL);
#endif
#endif
  }
  return Status;
}

回帖(1)

wufan931111

2024-5-20 15:38:33
根据您提供的信息,您在使用 STM32CubeMX 6.4.0 配置 STM32H743 的 USB host 时遇到了问题。在调用 USBH_CDC_Transmit() 函数时,程序在第一个 if 语句后直接跳转到 HardFault_Handler。以下是可能的原因和解决方案:

1. 确保 USB host 驱动已正确初始化:在调用 USBH_CDC_Transmit() 之前,请确保 USB host 驱动已正确初始化并配置。检查 USBH_Init() 和 USBH_RegisterClass() 函数是否已正确调用。

2. 检查 CDC 类驱动是否已正确注册:确保 CDC 类驱动已通过 USBH_RegisterClass() 函数注册到 USB host 驱动中。

3. 检查 pbuff 和 length 参数:确保传递给 USBH_CDC_Transmit() 函数的 pbuff 和 length 参数是有效的。如果 pbuff 为空或 length 为 0,函数可能会失败。

4. 检查 USB host 驱动的状态:在调用 USBH_CDC_Transmit() 之前,检查 USB host 驱动的状态(例如,是否已连接设备,设备是否已枚举等)。如果驱动状态不正确,函数可能会失败。

5. 检查 USB 硬件连接:确保 STM32H743 的 USB 引脚已正确连接到目标设备(例如,CDC 设备)。检查 USB 引脚是否焊接正确,以及是否有任何硬件故障。

6. 检查中断和时钟配置:确保 USB 时钟和中断已正确配置。检查 STM32CubeMX 中的时钟设置和中断配置。

7. 调试和日志记录:在 USBH_CDC_Transmit() 函数中添加调试和日志记录,以帮助确定问题所在。检查 CDC_Handle 是否已正确初始化,以及 USB host 驱动的状态。

8. 更新 STM32CubeMX 和固件库:尝试使用最新版本的 STM32CubeMX 和固件库,以确保所有驱动和配置都是最新的。

如果以上建议都无法解决问题,建议您查阅 STM32CubeMX 的官方文档和示例项目,以获取更多关于 USB host 和 CDC 类驱动的信息。此外,您还可以在 STMicroelectronics 社区或相关论坛上寻求帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分