[STM32G4] STM32 USB OTG 主机 / 设备库整体架构结构疑问

[复制链接]
104|36
Wordsworth 发表于 2026-7-2 10:26 | 显示全部楼层
自定义私有协议别插到底层core文件,升级库的时候代码会直接丢失,在usr接收回调里分包解析,发送时封装好再调用库发送接口最稳妥。
Bblythe 发表于 2026-7-2 10:27 | 显示全部楼层
给个实操小技巧,打印usbh_state状态机日志,跟着日志走一遍枚举流程,就能看懂什么时候触发收发回调,理清整个代码执行顺序。
Pulitzer 发表于 2026-7-2 10:27 | 显示全部楼层
这库分层设计确实绕新手,很多人刚上手都分不清core和usr,你可以先屏蔽业务代码跑通裸CDC收发,再加协议逻辑,分步排查不容易乱。
Uriah 发表于 2026-7-2 10:28 | 显示全部楼层
如果你数据吞吐量大,不建议在回调里做复杂解析,最好把USB数据缓存到环形队列,回调只存数据,主循环再处理私有协议,避免中断超时。
Clyde011 发表于 2026-7-2 10:29 | 显示全部楼层
如果你不想手写Modbus协议栈,可以移植FreeModbus开源库,适配H5串口底层驱动,内置主机模式,直接调用接口读写寄存器。
ClarkLLOTP 发表于 2026-7-2 11:11 | 显示全部楼层
CDC核心库负责端点数据,中断唤醒看USBH_CDC_CORE的中断处理,USBH_USR回调是你与应用交互的接口,私有协议解析在应用层实现。
内政奇才 发表于 2026-7-2 11:46 | 显示全部楼层
你提到的“周期传输中断”在主机模式下不适用,主机是通过轮询管道状态来判断IN端点有没有数据的。
才没有脸红 发表于 2026-7-2 16:23 | 显示全部楼层
你可以把数据解析层放在usbh_usr.c的回调里,比如收到数据后调用你自定义的ParseProtocol函数。
EmmaTT 发表于 2026-7-3 15:27 | 显示全部楼层
CDC核心库负责枚举和类请求,中断唤醒看USBH_INT_FLAG,收发逻辑在usbh_usr回调里实现。私有协议解析逻辑在用户应用层插入。
班杰明 发表于 2026-7-4 22:47 | 显示全部楼层
CDC核心库处理枚举和类请求,中断唤醒看寄存器。用户应用层通过USBH_USR接口调用,私有协议解析逻辑在用户应用层实现。
Henryko 发表于 2026-7-6 12:27 | 显示全部楼层
CDC核心库负责枚举和类请求,中断唤醒看寄存器,USBH_USR_Process是用户回调入口。私有协议解析逻辑在用户应用层实现,别动CDC核心库内容。
埃娃 发表于 2026-7-8 16:07 | 显示全部楼层
CDC核心库负责枚举和类请求,中断唤醒看EP_IN/OUT的寄存器状态。私有协议解析逻辑放在用户应用层,比如在USBH_USR_Process中插入。
sfd123 发表于 2026-7-10 12:40 | 显示全部楼层
我也想学习USB-CDC-HOST,可是库好大,都不知道从哪下手
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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