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(...); }
xTaskCreate( nazwa_funkcji, // Function that should be called "nazwa_zadania", // Name of the task (for debugging) 3000, // Stack size (bytes) NULL, // Parameter to pass tskIDLE_PRIORITY, // Task priority NULL // Task handle );
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 2, // 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.