你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32cubemx配置USB host

[复制链接]
1369007366@qq.c 提问时间:2024-3-12 20:31 / 已解决
用的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 发布时间:2024-3-12 20:31

举报

1个回答
xmshao 最优答案 回答时间:2024-3-13 10:40:09
你检查下是否发生了地址越界访问。另外你检查下发送缓冲地址空间的MPU属性是什么?有无访问限制方面的问题?
hardfault的话往往可以从SCB错误状态寄存器看到些提示,比方对齐问题啊、除以0问题、非法访问等等。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版