programowanie:rtos:start

To jest stara wersja strony!


FreeRTOS

System operacyjny czasu rzeczywistego (ang. real-time operating system, RTOS) – komputerowy system operacyjny, który został opracowany tak, by spełnić wymagania narzucone na czas wykonywania żądanych operacji.

Przykłady użycia na chipach ESP32. Używanie RTOS na ESP8266 jest mocno utrudnione.


Funkcja uruchamiana jako zadanie musi być nieskończoną pętlą:

void nazwa_funkcji(void* parameters)
{
  while (true)
  {
    ...    
    vTaskDelay(pdMS_TO_TICKS(1000));  // pauza przed następną iteracją w milisekundach
  }
}


Zadanie tworzy się w

void setup()
{
  xTaskCreate(...);
}


Pojedyncze zadanie

xTaskCreate(
  nazwa_funkcji,    // Function that should be called
  "nazwa_zadania",  // Name of the task (for debugging)
  3000,             // Stack size (bytes)
  NULL,             // Parameter to pass
  10,               // Task priority
  NULL              // Task handle
);


Tworzenie wielokrotnie zadania używającego tej samej funkcji

for(int i = 0; i < ilosc_powtorzen; i++)
{
  TaskParams* params = new TaskParams;
  params->param = i;
  String s = "Task_" + String(i);
  char* taskName = strdup(s.c_str());
 
  xTaskCreate(
    nazwa_funkcji,     // Function that should be called
    taskName,          // Name of the task (for debugging)
    3000,              // Stack size (bytes)
    params,            // Parameter to pass
    tskIDLE_PRIORITY,  // Task priority
    NULL               // Task handle
  );
}


Task priority oznacza priorytet dla tego zadania. Im wyższa liczba tym większy priorytet (tskIDLE_PRIORITY - najniższy priorytet).
Task handle służy do odwoływania się do tego zadania z innych części kodu. Pozwala np. wstrzymać i wznowić wykonywanie zadania.

  • programowanie/rtos/start.1728362611.txt.gz
  • ostatnio zmienione: 2024/10/08 06:43
  • przez sases