- 可能是在FreeRTOSConfig.h中给系统所分配的总的堆的大小超过了要移植的MCU的所能提供给用户使用的内存大小,即
#define configTOTAL_HEAP_SIZE ((size_t)(4*1024))
- 可能是在FreeRTOSConfig.h中给系统所分配的空闲任务的堆栈太小,
#define configMINIMAL_STACK_SIZE ((unsigned short)120)
- 可能是给任务分配的堆栈太小,或系统给任务、定时器、队列、信号量等的堆栈大小大于系统总的堆栈大小
- 不适当的使用printf()和sprintf(),在FreeRTOS手册的12章有说明。
如使用heap_3的内存分配方案,使用printf()和sprintf()可能会调用malloc()。
Printf()和sprintf()可能需要比其他情况大很多的堆栈
仅包括对printf()或sprintf()的调用会大大增加应用程序可执行文件的大小
来源:CSDN
作者:Rookie on the road
链接:https://blog.csdn.net/weixin_45045399/article/details/104001209