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

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

你可能感兴趣的:(FreeRTOS)