dsyq 发表于 2025-2-6 13:39

USB MSC在FreeRTOS的CMSIS_V2下不灵的问题解决

本帖最后由 dsyq 于 2025-2-6 13:43 编辑

问了一下kimi,回答了很多问题,右侧列出了ST官网的帖子:Solved: USB HOST with MSC is not working on FreeRTOS CMSIS... - STMicroelectronics Community

进入usbh_conf.h中,约100行,改为#define USBH_PROCESS_STACK_SIZE    ((uint16_t)1024) 即可。

当然,cubeMX下扩大配置这个任务的栈尺寸也可以。

小小蚂蚁举千斤 发表于 2025-2-6 22:05

问题找到了嘛?

dsyq 发表于 2025-2-7 15:19

找到了啊
任务栈开大一点!

暖了夏天蓝了海 发表于 2025-2-8 01:00

在FreeRTOS和CMSIS_V2环境下,可能存在任务优先级、堆栈大小等资源分配上的冲突。例如,USB HOST或MSC任务可能没有足够的堆栈空间来正常运行

一秒落纱 发表于 2025-2-8 02:00

配置不当也是一个常见问题。在usbh_conf.h文件中,USB HOST任务的堆栈大小可能未正确设置。根据一些论坛和社区的经验,将USBH_PROCESS_STACK_SIZE设置为较大的值(如1024)可能有助于解决问题

夜阑风雨 发表于 2025-2-8 03:00

USB MSC操作涉及大量的中断处理,如果中断优先级设置不当或中断服务程序(ISR)存在缺陷,可能导致USB通信不稳定或失败

远山寻你 发表于 2025-2-8 04:00

确保FreeRTOS中的中断优先级配置与USB HOST的要求相匹配,并检查ISR的实现是否正确

光辉梦境 发表于 2025-2-8 05:00

时钟配置对于USB通信至关重要。如果时钟频率不稳定或配置不正确,可能导致USB通信失败。检查STM32H7的时钟树配置,确保USB相关的时钟(如48MHz USB时钟)已正确配置并稳定输出

三生万物 发表于 2025-2-8 06:00

电源管理不当也可能导致USB通信问题。例如,如果电源电压不稳定或电源管理策略不合理,可能影响USB设备的正常工作。确保开发板或系统的电源电压稳定,并检查电源管理策略是否符合USB设备的要求

淡漠安然 发表于 2025-2-8 07:00

FreeRTOS和CMSIS_V2的组合可能与某些USB MSC设备的固件或驱动程序存在兼容性问题。尝试更新FreeRTOS、CMSIS或USB设备的固件和驱动程序,以查看是否解决了问题。

江河千里 发表于 2025-2-8 08:00

硬件连接不良或损坏也可能导致USB通信失败。检查USB连接器和电缆是否完好,并确保它们正确连接到STM32H7开发板和USB设备。

公羊子丹 发表于 2025-2-8 08:35

这个方法确实有效!我把栈尺寸调到1024,USB MSC在FreeRTOS下就正常了,多谢分享!

周半梅 发表于 2025-2-8 08:36

Kimi真是大神,思路清晰又直接,感觉跟着他的回答少踩了很多坑!

帛灿灿 发表于 2025-2-8 08:37

刚试了一下楼主的方法,果然行得通,这个栈空间问题之前还真没注意到。

童雨竹 发表于 2025-2-8 08:40

我也是踩了这个坑才发现是栈太小了……感谢楼主总结经验,少走弯路!

万图 发表于 2025-2-8 08:41

请问楼主试过更高的栈配置吗?比如2048?感觉复杂项目可能1024也不够用。

Wordsworth 发表于 2025-2-8 08:42

FreeRTOS配置确实坑多,我之前还遇到USB掉线问题,后来才发现是任务优先级没设置好。

Bblythe 发表于 2025-2-8 08:44

这点确实要注意,cubeMX默认的很多配置不太适合实际应用,尤其在FreeRTOS环境下。

Pulitzer 发表于 2025-2-8 08:45

感觉ST的官方帖子有时候说得太模糊了,还是社区分享的经验更实用!

Uriah 发表于 2025-2-8 08:46

有没有人用这个方法配合SD卡驱动?我打算做个MSC+SD的功能,不知道还有什么坑。
页: [1] 2
查看完整版本: USB MSC在FreeRTOS的CMSIS_V2下不灵的问题解决