FreeRTOSのヒント(1):システムの現在のタスクリスト、タスクステータスの優先度、使用率、その他の情報を印刷する

このブログは、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); 
    }
}

対応するログは次のように出力されます。

 任务名      任务状态 优先级   剩余栈 任务序号

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);
    }
}

対応するログは次のように出力されます。

任务名       运行计数         使用率

main            56475           <1%
IDLE0           4091951         48%
test_task       4328356         50%
Tmr Svc         35              <1%
esp_timer       17606           <1%

おすすめ

転載: blog.csdn.net/zztiger123/article/details/106189170