STM32
直播中

廉鼎琮

9年用户 1031经验值
私信 关注
[问答]

求助,关于stm32f1使用freeRTOS和Fatfs时任务堆栈大小问题求解

哪位使用过freeRTOS和Fatfs时,使用Fatfs系统的函数如f_open()等等时,此任务的堆栈大小大致需要多大,当前MAX_SS 定义为4096,我分配12K软件都跑飞了,请哪位使用分享一下经验,谢谢!~~?

回帖(1)

梅利号

2024-5-9 16:23:26
在使用STM32F1、FreeRTOS和FatFs时,任务堆栈大小的选择取决于您的应用程序需求和复杂性。您提到当前MAX_SS定义为4096,但分配了12K的堆栈仍然出现问题。为了解决这个问题,我们可以尝试以下步骤:

1. 分析任务需求:首先,了解您的应用程序中每个任务的功能和需求。这将帮助您确定每个任务所需的堆栈大小。

2. 调整堆栈大小:根据任务的复杂性和需求,为每个任务分配合适的堆栈大小。例如,对于简单的任务,可能只需要几百字节的堆栈空间,而对于更复杂的任务,可能需要几千字节。

3. 测试和优化:在分配了合适的堆栈大小后,运行您的应用程序并观察其性能。如果仍然出现问题,您可能需要进一步调整堆栈大小或优化代码以减少内存使用。

4. 使用调试工具:使用调试工具(如ST-LINK)来检查程序运行时的堆栈使用情况。这将帮助您确定是否存在堆栈溢出或其他内存问题。

5. 考虑使用动态内存分配:如果您的应用程序具有可变的需求,可以考虑使用动态内存分配来更好地管理内存。这可以通过使用FreeRTOS的动态内存分配API来实现。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分