下面例举几个常见的任务查询API(其余可参考FreeRTOS开发手册):
UBaseType_t Priority;
Priority = uxTaskPriorityGet(QUERYTask_Handler);
printf("Task Pri = %d \r\n",Priority);
TaskStatus_t * TaskStatusArray;
UBaseType_t ArraySize,i;
uint32_t TotalRunTime;
ArraySize = uxTaskGetNumberOfTasks();
TaskStatusArray = pvPortMalloc(ArraySize *sizeof(TaskStatus_t));if(TaskStatusArray != NULL){ ArraySize = uxTaskGetSystemState( (TaskStatus_t *) TaskStatusArray,(UBaseType_t) ArraySize,(uint32_t *) &TotalRunTime ) ;printf("TaskName\t\tTaskPri\t\tNumber\t\t\r\n");for(i=0;i<ArraySize;i++){printf("%s\t\t%d\t\t%d\t\t\r\n", TaskStatusArray[i].pcTaskName,TaskStatusArray[i].uxCurrentPriority,TaskStatusArray[i].xTaskNumber);}}
TaskHandle_t TaskHandle;TaskHandle = xTaskGetHandle("query_task");
printf("TaskHandle is %#x \r\n",TaskHandle);
printf("TaskHandle is %#x \r\n",QUERYTask_Handler);
UBaseType_t StackMin;while(1){StackMin = uxTaskGetStackHighWaterMark(QUERYTask_Handler);printf("StackMin is %d \r\n",StackMin);vTaskDelay(500);}
eTaskState TaskState;
TaskState = eTaskGetState(QUERYTask_Handler);
printf("TaskTate is %d \r\n",TaskState);
char InfoBuffer[1000];vTaskList(InfoBuffer);
printf("%s \r\n",InfoBuffer);