下面例举几个常见的任务查询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);