由于平台的差异性,FreeRTOS容易出现栈的溢出等现象,这时候在调试的时候使用
void vTaskList( char * pcWriteBuffer ) 这个函数很有必要
这个函数可以打印出栈名 栈状态 优先级 栈的剩余空间
这样就一目了然了,demo如下
void TASK_LIST(void *arg) { char pWriteBuffer[2048]; for(;;) { sys_msleep(10000
); vTaskList((char *)&pWriteBuffer); printf("task_name task_state priority
stack tasK_num\n"); printf("%s\n", pWriteBuffer); } vTaskDelete(NULL); return; }
打印如下
task_name task_state priority stack tasK_num TASK_LIST R 4 341 20 LOGUART_T B
5 457 1
R代表准备态 ready
B代表阻塞态 blocked
注意在FreeRTOSconfig.h要打开:
configUSE_TRACE_FACILITY 1
configUSE_STATS_FORMATTING_FUNCTIONS 1
得到了上面的任务剩余栈区大小,有利于后期开发的优化
热门工具 换一换