ISIX-RTOS – przykłady w języku C: LCD+joystick+LED

Cykliczne miganie diodą LED dołączoną na płytce STM32Butterfly do linii PE14 mikrokontrolera odbywa się w wątku pokazanym na list. 1.

 

List. 1. Wątek odpowiadający za miganie LED dołączonej do linii PE14 mikrokontrolera STM32F107

Funkcję implementującą wątek w systemie ISIX deklarujemy za pomocą makra ISIX_TASK_FUNC, które jako argumenty przyjmuje nazwę funkcji oraz nazwę parametru funkcji. Każda funkcja implementująca zadanie w systemie ISIX posiada parametr typu void*, poprzez który możemy przekazać dane podczas jego tworzenia. W wątku najpierw jest konfigurowany port mikrokontrolera PE14, do którego podłączono diodę D1, aby pełnił rolę linii wyjściowej. Następnie program wchodzi do niekończącej się pętli, w której cyklicznie zmieniany jest stan diody LED. Opóźnienie (tak aby było widoczne miganie diody) jest realizowane za pomocą funkcji isix_wait_ms(), która powoduje wywłaszczenie (uśpienie) wątku na zadaną liczbę milisekund. Pokrewną funkcją jest isix_wait(), która usypia wykonywanie wątku na zadaną liczbę cykli systemu operacyjnego (ticks). W systemie ISIX, funkcje implementujące wątek muszą zawierać pętlę nieskończoną a zakończenie wykonywania wątku możliwe jest tylko za pomocą wywołania isix_task_delete(NULL). Tworzenie wątków systemowych odbywa się w funkcji main() (list. 2).

 

List. 2. Funkcja tworząca wątki systemowe

O autorze