L476使用USB主机MSC和设备CDC
配置STM32CubeIDE中的L476RG(使用FreeRTOS),以实现USB主机MSC(FatFS)和设备CDC(虚拟串口VCOM)功能。但我发现这似乎OTG设置只是插入了一个空dummy stub,没有更多内容。我只能单独配置USB主机或设备模式。有人解决过这个问题吗?最终的解决方案是否必须将主机和设备模式的代码手动合并到一个项目中?我之前用 L476 做过双角色 USB,确实 CubeMX 只给了最简单的 OTG 结构,得手动改。 OTG 要支持主机 MSC 和设备 CDC 一起跑,协议栈必须自己合并,CubeIDE 默认拆不开。 FreeRTOS 下搞 OTG 会麻烦点,最好把主机和设备各自任务分开写,再做状态切换。 我当时直接把 USB Host 和 USB Device 两个中间件都生成出来,然后手动挑文件合成的。 有时候 OTG 需要外接 ID 引脚或切换电路,楼主板子这块怎么做的? ST 的官方例程里基本没现成双角色,参考 F4/H7 的 OTG 例程能找到点思路。 如果只是想要插 U 盘的同时做 CDC,考虑用双芯片也许简单点,一个 MCU 做主机,一个 MCU 做 CDC。 注意 MSC 和 CDC 会争 USB Core,调度和中断要小心,不然枚举容易失败。 有条件可以先把主机和设备功能分开单独验证好,再尝试组合,调试量会小很多。 楼主要是后面有好的合并方法分享一下,我这边也打算搞个双角色的 L4 项目! 配置STM32CubeIDE中的L476RG
页:
[1]