内核558 发表于 2025-6-30 08:57

在断开USB线并重新连接后,使用CubeMX HAL的USB CDC(虚拟串口)功能出现异常。

我遇到了一个USB无法正常工作的问题——使用CubeMX HAL库的USB CDC(虚拟串口)在断开USB线并重新连接后无法恢复。程序在上传到STM32后,会在while(1)主循环中持续向USB端口写入数据。 while (1){    /* USER CODE END WHILE */   /* USER CODE BEGIN 3 */    CDC_Transmit_FS(buffer, sizeof(buffer));    HAL_Delay(1000);}数据可以正常写出,在Windows 7系统(使用Tera Term和Docklight工具)中可见。但当我断开USB线缆(OTG FS端口)并重新连接时,Windows会显示"无法识别的USB设备"错误提示。此时无法接收数据。必须对STM32F407进行复位操作,才能恢复数据传输和线缆识别功能。我的问题是如何使USB设备始终正常工作(在断开并重新连接线缆后),确保能被Windows正确识别并维持数据传输?




jcky001 发表于 2025-7-1 17:00

USB设备枚举失败引起的?

cr315 发表于 2025-7-1 18:02

中断处理不当可能导致设备状态异常。

flycamelaaa 发表于 2025-7-1 19:44

HAL库版本不兼容或配置参数如堆栈大小、中断优先级等未正确设置。

sdCAD 发表于 2025-7-3 16:19

检查USBD_CDC_DeInit和USBD_CDC_Init函数

biechedan 发表于 2025-7-3 22:26

检查USB CDC的软件配置            

lihuami 发表于 2025-7-4 10:20

检查USB接口和相关硬件的连接            

yorkbarney 发表于 2025-7-4 17:01

USB线缆质量差或接触不良可能导致重新连接时电压不稳,触发芯片复位或USB模块异常。

pmp 发表于 2025-7-4 19:22

USB设备在插入时需要经历一个枚举过程,如果这个过程出现问题,可能会导致设备无法正常工作。

yorkbarney 发表于 2025-7-5 22:44

USB CDC通常依赖于环形缓冲区来存储发送和接收的数据。

elsaflower 发表于 2025-7-6 12:33

通过拉低USB-PD引脚模拟拔插过程,再重新初始化USB。

xiaoyaodz 发表于 2025-7-6 17:39

可能是由于USB设备的枚举过程或驱动程序的问题导致的

sdlls 发表于 2025-7-7 12:49

在USBD_CDC_If.c文件中实现USB连接和断开的回调函数,以便于进行必要的资源释放和重新分配

jimmhu 发表于 2025-7-7 14:27

通过串口助手发送数据,断开USB线后重新连接,观察数据是否恢复传输

jtracy3 发表于 2025-7-11 11:01

安装STM32 USB CDC驱动,或驱动版本不匹配。

wengh2016 发表于 2025-7-11 13:47

USB上拉电阻缺失            

pixhw 发表于 2025-7-12 11:33

热插拔后未更新,导致数据传输失败。

pl202 发表于 2025-7-12 14:36

USB设备未正确重新初始化            

jonas222 发表于 2025-7-12 18:15

中断或任务调度冲突            
页: [1]
查看完整版本: 在断开USB线并重新连接后,使用CubeMX HAL的USB CDC(虚拟串口)功能出现异常。