目录
一、函数vTaskList()
1、 函数说明
函数vTaskList()是内核信息统计用途的API函数,用于返回内核中所有任务的字符串列表信息,包括每个任务的名称、状态、优先级、高水位值、任务编号等。其原型定义如下:
#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
void vTaskList( char * pcWriteBuffer )
{
TaskStatus_t *pxTaskStatusArray;
UBaseType_t uxArraySize, x;
char cStatus;
//此处省去1万言
}
#endif /* ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
参数pcWriteBuffer是预先创建的一个字符数组的指针,用于存储返回的字符串信息。这个字符数组必须足够大,FreeRTOS不会检查这个数组的大小。这个函数的使用示例代码如下:
char infoBuffer[300];
vTaskList(infoBuffer);
返回的数据存储在字符数组infoBuffer中,使用了“\t”“\n”等转义字符,以便用表格方式显示。
2、返回的字符串表格说明
函数vTaskList()返回的是一个用字符串表达的表格。例如:
Task_LED1 \tx\t8\t50\t2\r\n
Tmr Svc \tR\t2\t246\t4\r\n
IDLE \tR\t0\t118\t3\r\n
Task_ADC \tB\t24\t134\t1\r\n\0
其中,每行字符串的第1列是任务名称,这里除了用户的两个任务Task_LED1和Task_ADC,还有系统自动创建的空闲任务IDLE和定时器服务任务Tmr Svc。
其中,每行字符串的第2列是用“\t”分隔的多个参数,依次为状态、优先级、栈空间高水位值和任务编号。
其中的第2列,任务状态用字母表示,各字母的意义如下:
- X,运行状态,也就是调用函数vTaskList()的任务的状态。