FreeRTOS移植到MCU上进入HardFault_Handler的原因

核能气质少年 提交于 2020-01-25 10:57:45
  1. 可能是在FreeRTOSConfig.h中给系统所分配的总的堆的大小超过了要移植的MCU的所能提供给用户使用的内存大小,即
    #define configTOTAL_HEAP_SIZE ((size_t)(4*1024))
    分配过大
  2. 可能是在FreeRTOSConfig.h中给系统所分配的空闲任务的堆栈太小,
    #define configMINIMAL_STACK_SIZE  ((unsigned short)120) 
  3. 可能是给任务分配的堆栈太小,或系统给任务、定时器、队列、信号量等的堆栈大小大于系统总的堆栈大小
  4. 不适当的使用printf()和sprintf(),在FreeRTOS手册的12章有说明。

             如使用heap_3的内存分配方案,使用printf()和sprintf()可能会调用malloc()。

             Printf()和sprintf()可能需要比其他情况大很多的堆栈

             仅包括对printf()或sprintf()的调用会大大增加应用程序可执行文件的大小

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!