硬汉嵌入式论坛

 找回密码
 立即注册
查看: 256|回复: 12
收起左侧

使用stm32H743开发usb host模式的cdc通信出现hardfault

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2025-5-21 09:29:44 | 显示全部楼层 |阅读模式
我目前在使用stm32h743这个板子开发usb的主机模式的cdc通信,使用cubemx生成usb代码后测试是只要进入到
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)
    USBH_OS_PutMessage(phost, USBH_CLASS_EVENT, 0U, 0U);
#endif /* (USBH_USE_OS == 1U) */
  }

  return Status;
}
的第一个

  if ((CDC_Handle->state == CDC_IDLE_STATE) || (CDC_Handle->state == CDC_TRANSFER_DATA))这里

就会直接进跳转到

void HardFault_Handler(void)
{
  /* USER CODE BEGIN HardFault_IRQn 0 */

  /* USER CODE END HardFault_IRQn 0 */
  while (1)
  {
    /* USER CODE BEGIN W1_HardFault_IRQn 0 */
    /* USER CODE END W1_HardFault_IRQn 0 */
  }
}

试了很多方法一直没有解决,希望有大佬可以指点一下这个该怎么处理
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-5-22 08:49:02 | 显示全部楼层
楼主这个是开发什么功能,host方式外挂虚拟usb串口吗
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2025-5-22 09:29:17 | 显示全部楼层
eric2013 发表于 2025-5-22 08:49
楼主这个是开发什么功能,host方式外挂虚拟usb串口吗

是使用stm32h743的板子用usb3300通过主机模式cdc通信和我们公司的一个产品模块进行usb通信,板子作为host,我们公司产品作为device
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2025-5-22 09:31:49 | 显示全部楼层
eric2013 发表于 2025-5-22 08:49
楼主这个是开发什么功能,host方式外挂虚拟usb串口吗

是使用stm32h743的板子用usb3300通过主机模式cdc通信和我们公司的一个产品模块进行usb通信,板子作为host,我们公司产品作为device
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2025-5-22 09:34:45 | 显示全部楼层
是使用stm32h743的板子用usb3300通过主机模式cdc通信和我们公司的一个产品模块进行usb通信,板子作为host,我们公司产品作为device
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-5-23 08:18:50 | 显示全部楼层
tyt175986 发表于 2025-5-22 09:34
是使用stm32h743的板子用usb3300通过主机模式cdc通信和我们公司的一个产品模块进行usb通信,板子作为host, ...

论坛有几个坛友分享的usb host cdc例子,看看能不能帮到你

USBX通过HOST_CDC_ECM驱动EC20模块
https://www.armbbs.cn/forum.php? ... 6634&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2025-5-23 17:22:54 | 显示全部楼层
eric2013 发表于 2025-5-23 08:18
论坛有几个坛友分享的usb host cdc例子,看看能不能帮到你

USBX通过HOST_CDC_ECM驱动EC20模块

这个我之前也有看过,配置过还是会出现这个问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-5-24 08:20:50 | 显示全部楼层
tyt175986 发表于 2025-5-23 17:22
这个我之前也有看过,配置过还是会出现这个问题

这个只能再研究研究了,我也没有怎么研究过
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2025-5-26 11:19:51 | 显示全部楼层
eric2013 发表于 2025-5-24 08:20
这个只能再研究研究了,我也没有怎么研究过

请问有没有那种usb的cdc通讯工具,把板子作为主机,上位机作为从机的那种
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-5-27 09:35:39 | 显示全部楼层
tyt175986 发表于 2025-5-26 11:19
请问有没有那种usb的cdc通讯工具,把板子作为主机,上位机作为从机的那种

电脑pc做从机吗?pc应该是做不了从机
回复

使用道具 举报

6

主题

268

回帖

286

积分

高级会员

积分
286
发表于 2025-5-27 12:00:02 | 显示全部楼层
感觉USB-HOST这种适合上LINUX,用STM32H7太费劲了。
回复

使用道具 举报

2

主题

67

回帖

78

积分

初级会员

积分
78
发表于 6 天前 | 显示全部楼层
你用的的ST官方的USB库啊?我建议不要用,ST官方的库坑的很,最新的版本还好,最初的版本bug一大推,CDC根本用不了。我建议用USBX或者CherryUSB。HAL库一定要用最新版本,否则一大堆bug。理论上来说只用到ST的USB中断函数,应该不会有问题。详细的可以研究下USB中断里面通信具体传输的是什么数据导致进入硬件中断。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 05:19 , Processed in 0.314015 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表