此篇博客用來記錄如何在使用 FreeRTOS 打印系統當前的任務列表,任務狀態優先級,使用率等信息。
1. vTaskList
使用 vTaskList() 能打印
- 任務名
- 任務狀態
- 優先級
- 剩餘棧
- 任務序號
使用示例如下:
void app_main()
{
xTaskCreate(test_task, "test_task", 4096, NULL, 6, NULL);
static char InfoBuffer[512] = {0};
while (1) {
vTaskList((char *) &InfoBuffer);
printf("任務名 任務狀態 優先級 剩餘棧 任務序號\r\n");
printf("\r\n%s\r\n", InfoBuffer);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}
對應 log 打印如下:
任務名 任務狀態 優先級 剩餘棧 任務序號
main R 1 2996 2
IDLE0 R 0 1232 3
test_task B 6 3460 5
Tmr Svc B 1 2684 4
esp_timer B 22 3632 1
2. vTaskGetRunTimeStats
使用 vTaskGetRunTimeStats() 能打印
- 任務名
- 運行計數
- 使用率
使用示例如下:
void app_main()
{
xTaskCreate(test_task, "test_task", 4096, NULL, 6, NULL);
static char InfoBuffer[512] = {0};
while (1) {
vTaskGetRunTimeStats((char *) &InfoBuffer);
printf("\r\n任務名 運行計數 使用率\r\n");
printf("\r\n%s\r\n", InfoBuffer);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}
對應 log 打印如下:
任務名 運行計數 使用率
main 56475 <1%
IDLE0 4091951 48%
test_task 4328356 50%
Tmr Svc 35 <1%
esp_timer 17606 <1%