[STM32G4] 如何判断 USB已准备就绪

[复制链接]
819|98
Jacquetry 发表于 2026-6-8 18:06 | 显示全部楼层
检查 CDC_LineState.DTR 和 RTS,这两个标志位可以确认上位机是否已打开串口。同时,在 SET_CONTROL_LINE_STATE 回调中更新连接状态标志。
AloneKaven 发表于 2026-6-8 19:38 | 显示全部楼层
你说的对,DTR信号很重要。我之前项目里也是这样,加了个判断DTR的代码,稳了。你可以这样写:if ((USBD_STATE_CONFIGURED == hUsbDeviceFS.dev_state) && (CDC_LineState.DTR == 1)),这样就能确保上位机打开了串口再发送数据。
Moon月 发表于 2026-6-8 23:21 | 显示全部楼层
USB主机读取U盘文件,先确认U盘连接正常,主机识别U盘,然后在文件管理器中浏览U盘文件夹,双击打开文件即可查看。
Undshing 发表于 2026-6-11 15:21 | 显示全部楼层
看回调函数里的CDC_LINE_STATE回调,DTR置位后才能发送数据。
MintMilk 发表于 2026-6-12 11:43 | 显示全部楼层
USB主机通过发送读取请求到U盘,U盘响应并传输文件数据到主机。
星闪动力 发表于 2026-6-17 20:58 | 显示全部楼层
检测USB设备是否支持CDC类,可查看设备描述符中的“Class”字段,值为0x02代表支持。
物联万物互联 发表于 2026-6-21 16:14 | 显示全部楼层
查找全局变量,需先明确其定义位置和命名,通常在程序顶部或特定头文件中。
未来AI 发表于 2026-6-26 13:43 | 显示全部楼层
你需要一个变量来存储当前状态,这可以通过定义一个全局变量实现。例如:定义全局变量 `current_status` 并初始化。
jiekou001 发表于 2026-6-27 11:10 | 显示全部楼层
USB 设备无警告标识、属性里「设备正常运行」= 就绪。有返回可移动磁盘信息、HealthStatus=Healthy 代表就绪。
zephyr9 发表于 2026-6-29 08:05 | 显示全部楼层
先检查端点0电路连接,确认无损坏或短路,然后通过编程验证端点0数据传输是否稳定。
亚瑟 发表于 2026-7-1 17:32 | 显示全部楼层
DTR和RTS信号判断,或者使用SET_CONTROL_LINE_STATE回调更新标志。如果CubeMX生成的库,直接用库函数判断更方便。
dreamCar 发表于 2026-7-1 18:38 | 显示全部楼层
插上设备,电脑认出盘符和名字,能读写文件,USB准备妥当。
埃娃 发表于 2026-7-2 11:54 | 显示全部楼层
先检查DTR信号,如果DTR=1,表示上位机已打开串口。也可以在SET_CONTROL_LINE_STATE回调中设置连接标志。
xinpian101 发表于 2026-7-2 14:24 | 显示全部楼层
能看到新增盘符、双击可正常打开、读取文件 → 完全就绪
Stahan 发表于 2026-7-3 17:27 | 显示全部楼层
检查 CDC_LineState 的 DTR 位,如果为1,表示上位机已经打开串口。同时,可以实现 SET_CONTROL_LINE_STATE 回调函数来监控 DTR 变化,这样更可靠。
Henryko 发表于 2026-7-4 20:49 | 显示全部楼层
判断DTR置位或使用回调更新标志,确保上位机已打开串口再发送。
digit0 发表于 2026-7-9 13:55 | 显示全部楼层
USB状态机关键标志包括设备枚举完成、数据传输状态、错误状态等。
理想阳 发表于 2026-7-10 15:17 | 显示全部楼层
确保所有连接稳固无误,才能说设备准备就绪。
734774645 发表于 2026-7-14 18:32 | 显示全部楼层
打开「此电脑」,能看到 USB 盘符(如 D:、E:),双击可正常打开、能读写文件 = 完全就绪
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0