-
可能是在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()的调用会大大增加应用程序可执行文件的大小
版权声明:本文为weixin_45045399原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。