heap_3.c
#include "FreeRTOS.h" #include "task.h" #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE #if( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) #error This file must not be used if configSUPPORT_DYNAMIC_ALLOCATION is 0 #endif /*-----------------------------------------------------------*/ void *pvPortMalloc( size_t xWantedSize ) { void *pvReturn; vTaskSuspendAll(); //关闭任务调度器 { pvReturn = malloc( xWantedSize ); //调用标准c库 traceMALLOC( pvReturn, xWantedSize ); } ( void ) xTaskResumeAll(); //恢复任务调度器 #if( configUSE_MALLOC_FAILED_HOOK == 1 ) { if( pvReturn == NULL ) { extern void vApplicationMallocFailedHook( void ); vApplicationMallocFailedHook(); } } #endif return pvReturn; } /*-----------------------------------------------------------*/ void vPortFree( void *pv ) //内存释放 { if( pv ) { vTaskSuspendAll(); { free( pv ); traceFREE( pv, 0 ); } ( void ) xTaskResumeAll(); } } 注释: 在启动文件中 Heap_Size EQU 0x00000200 来修改内存的大小