ISIX-RTOS – przykłady w języku C: LCD+joystick+LED
Tworzenie wątków w systemie ISIX odbywa się za pomocą funkcji task_t* isix_task_create(task_func_ptr_t task_func, void *func_param, unsigned long stack_depth, prio_t priority); jako pierwszy argument task_func przyjmuje wskaźnik do funkcji tworzącej wątek. Drugi argument func_param określa argument przekazany do funkcji zadania/wątku, który można odczytać z tej funkcji za pomocą argumentu arg. Argument stack_depth określa wielkości stosu dla danego zadania (wątku). Minimalną dopuszczalną wielkość pamięci określa stała ISIX_MIN_STACK_DEPTH. Argument priority określa priorytet przydzielony dla tworzonego zadania. Funkcja zwraca wskaźnik na strukturę kontrolną zadania task* lub NULL w przypadku wystąpienia błędu. Najpierw tworzony jest wątek blinking_task migający diodą LED. Jako argument dodatkowy przekazujemy mu wartość NULL, ponieważ nie wykorzystujemy żadnych dodatkowych danych, oraz nie komunikujemy się z innymi wątkami. Wielkość stosu ustalono na wartość minimalną, ponieważ, funkcja wątku praktycznie nie wykorzystuje żadnych zmiennych lokalnych. Kolejną czynnością jest utworzenie kolejki FIFO, za pomocą której będziemy przekazywać kody wciśniętych klawiszy do wątku wyświetlania. Tworzenie nowej kolejki FIFO odbywa się za pomocą funkcji fifo_t* isix_fifo_create(int n_elem, size_t elem_size). Jako pierwszy argument podajemy ilość elementów kolejki FIFO, natomiast jako drugi argument przekazujemy wielkość pojedynczego elementu w kolejce. W przypadku pomyślnego utworzenia kolejki FIFO jest zwracany wskaźnik do nowo utworzonej kolejki. W naszym przypadku kolejka składa się z 10 elementów o wielkości sizeof(key_t). Jeżeli kolejka została utworzona pomyślnie (wskaźnik do kolejki fifo_t jest różny od NULL), tworzony jest wątek display_srv_task odpowiedzialny za odbieranie komunikatów z kodami wciśniętych klawiszy oraz keyboard_srv_task odpowiedzialny za odczytywanie stanu klawiszy i wysyłanie kodów. Po utworzeniu wszystkich wątków jako ostatnia wywoływana jest funkcja isix_start_scheduler(), co powoduje uruchomienie planisty zadań (schedulera) systemu ISIX. Za odczytywanie stanu joysticka odpowiedzialny jest wątek keyboard_srv_task (list. 3).
List. 3. Wątek odpowiedzialny za odczyt stanu styków joysticka
/** Keyboyard server task */
static ISIX_TASK_FUNC(keyboard_srv_task,entry_params)
{
//Enable PE in APB2
RCC->APB2ENR |= RCC_APB2Periph_GPIOE;
//Set GPIO as inputs
io_config(KEY_PORT, KEY_OK_BIT, GPIO_MODE_INPUT, GPIO_CNF_IN_FLOAT);
io_config(KEY_PORT, KEY_UP_BIT, GPIO_MODE_INPUT, GPIO_CNF_IN_FLOAT);
io_config(KEY_PORT, KEY_DOWN_BIT, GPIO_MODE_INPUT, GPIO_CNF_IN_FLOAT);
io_config(KEY_PORT, KEY_LEFT_BIT, GPIO_MODE_INPUT, GPIO_CNF_IN_FLOAT);
io_config(KEY_PORT, KEY_RIGHT_BIT, GPIO_MODE_INPUT, GPIO_CNF_IN_FLOAT);
fifo_t *kbd_fifo = (fifo_t*)entry_params;
//Previous key variable
static key_t p_key = -1;
for(;;)
{
//Get key
key_t key = get_key();
//Check if any key is pressed
if(key!=0 && p_key==0)
{
isix_fifo_write( kbd_fifo, &key, ISIX_TIME_INFINITE );
}
//Previous key assignement
p_key = key;
//Wait short time
isix_wait_ms( KBD_DELAY_TIME );
}
}


PM-3133-CPS – inteligentny trójfazowy licznik energii z CANopen
Czujnik drgań STMicroelectronics z wbudowaną AI alternatywą dla czujników piezoelektrycznych do monitorowania urządzeń przemysłowych
Słabe ogniwa elektroniki: Dlaczego jakość wiązek kablowych i płytek PCB decyduje o Twoim zysku? 


![https://www.youtube.com/watch?v=gHcP8AajoN4 Szymon Robak oprowadza po katowickim Laboratorium Badań Kompatybilności Elektromagnetycznej w Sieć Badawcza Łukasiewicz - Instytucie Sztucznej Inteligencji i Cyberbezpieczeństwa. Zapraszamy na film! [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/06/Szymon-Robak-tytulowe.png)
![https://www.youtube.com/watch?v=BgxJVTwYJ-s Zapraszamy do obejrzenia filmu i wysłuchania krótkich wypowiedzi prelegentów Hardware Forum 2026 i organizatorów majowej konferencji dla inżynierów z branży elektronicznej: Konrad Bruliński z Lemontech, prof. Krzysztof Kulpa z Politechniki Warszawskiej, Zbigniew Huber z FLC, Ewa Załupska z firmy KROK, Jerzy Kozieł z MPTECH, Grzegorz Potyralski z VIGO Photonics, dr Krzysztof Czuba z Politechniki Warszawskiej, Anna Beata Kalisz Hedegaard z Quantum Security Defence, Adrian Cichosz z Elhurt Dystrybucja Anna Kamińska z Creotech Quantum, oraz Łukasz Jaeszke i Adam Jaeszke z TEK.day [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/05/tytulowe-film-1.png)

