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

  • Post author:
  • Post category:其他


  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()的调用会大大增加应用程序可执行文件的大小



版权声明:本文为weixin_45045399原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。