Dodany przez: klima, 21:19 11-01-2026

Nowy Pobierz
  1. #include "freertos/FreeRTOS.h"
  2. #include "freertos/task.h"
  3.  
  4. float getCPUUsage() {
  5.     TaskStatus_t *taskArray;
  6.     UBaseType_t taskCount;
  7.     uint32_t idleTime = 0, totalTime = 0;
  8.  
  9.     taskCount = uxTaskGetNumberOfTasks();
  10.     taskArray = (TaskStatus_t*)pvPortMalloc(taskCount * sizeof(TaskStatus_t));
  11.     if (!taskArray) return 0.0;
  12.  
  13.     taskCount = uxTaskGetSystemState(taskArray, taskCount, &totalTime);
  14.  
  15.     for (UBaseType_t i = 0; i < taskCount; i++) {
  16.         if (strcmp(taskArray[i].pcTaskName, "IDLE") == 0) {
  17.             idleTime = taskArray[i].ulRunTimeCounter;
  18.             break;
  19.         }
  20.     }
  21.  
  22.     vPortFree(taskArray);
  23.  
  24.     if (totalTime == 0) return 0.0;
  25.     return 100.0 * (1.0 - (float)idleTime / (float)totalTime);
  26. }
  27.  

Źródło:

Ostatnie wpisy

Linki

Funkcje