FreeRTOS 小技巧(一):打印系統當前的任務列表,任務狀態優先級,使用率等信息

此篇博客用來記錄如何在使用 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%
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章