代码
使用FreeRTOS时,使用下列函数方便查看系统各内存余量,方便对系统做出调整。要使用uxTaskGetStackHighWaterMark函数的话宏INCLUDE_uxTaskGetStackHighWaterMark 必须为 1
BaseType_t val;
/* 查询系统历史剩余最小内存 */
printf("FreeRTOS总内存大小: %d 字节\r\n",configTOTAL_HEAP_SIZE);//打印FreeRTOS总内存大小(单位字节)
printf("当前剩余堆内存大小: %d 字节\r\n", xPortGetFreeHeapSize());//查询当前剩余堆内存大小
printf("历史剩余最小内存大小:%d 字节\r\n\r\n",xPortGetMinimumEverFreeHeapSize());//查询历史剩余最小内存大小
/* 查询任务历史剩余最小内存 */
val = uxTaskGetStackHighWaterMark(SPITask_Handler);//查询SPI任务历史剩余最小内存大小(单位字节)
printf("SPI任务历史剩余最小内存:%d 字节\r\n",(int)val*4);
val = uxTaskGetStackHighWaterMark(_4GTask_Handler);//查询4G任务历史剩余最小内存大小(单位字节)
printf("4G任务历史剩余最小内存:%d 字节\r\n",(int)val*4);
val = uxTaskGetStackHighWaterMark(MAINTask_Handler);//查询MAIN任务历史剩余最小内存大小(单位字节)
printf("MAIN任务历史剩余最小内存:%d 字节\r\n",(int)val*4);
val = uxTaskGetStackHighWaterMark(TCPSERVERTask_Handler);//查询TCP服务器任务历史剩余最小内存大小(单位字节)
printf("TCP任务历史剩余最小内存:%d 字节\r\n",(int)val*4);
val = uxTaskGetStackHighWaterMark(SDTask_Handler);//查询SD任务历史剩余最小内存大小(单位字节)
printf("SD任务历史剩余最小内存:%d 字节\r\n",(int)val*4);
注意
val 获得的是字而不是字节,因而打印时候要想获取字节数,要乘4.