STM32Butterfly2: obsługa joysticka
Po przeprowadzeniu konfiguracji program definiuje zmienną pomocniczą i przechodzi do nieskończonej pętli while, podczas której wykonywane są operacje odczytu i ustawiania danych. W pierwszym kroku pętli następuje zdefiniowanie zmiennej jkey, przechowującej informacje o stanie joysticka. Automatycznie do zmiennej następuje przypisanie odpowiedniej wartości przez funkcję joy_keys(), listing jej wnętrza został przedstawiony poniżej.
static inline int joy_keys(void)
{
return (~io_get_mask(JOY_PORT, JOY_BITS) & JOY_BITS) >> JOY_PIN_OK;
}
Jak się okazuje, działanie funkcji polega na zwróceniu wartości prezentującej stany linii, do których podłączony jest joystick. Realizuje to funkcja io_get_mask, która jako pierwszy parametr przyjmuje nazwę portu GPIO, a jako drugi parametr maskę ograniczającą odczyt tylko do wskazanych bitów rejestru prezentującego stan linii. Negacja otrzymanej wartości wynika z faktu, iż aktywnym stanem na linii joysticka jest stan niski, z tego też powodu występuje nastopny iloczyn z maską określającą linie joysticka. Natomiast przesunięcie w prawo ma za zadanie przekształcenie wartości do takiej postaci, gdzie w kolejności od najmłodszego bitu poszczególne bity będą przedstawiały linie: joystick wciśnięty, pozycja joysticka przesunięta do góry, pozycja joysticka przesunięta do dołu, pozycja joysticka przesunięta w prawo i pozycja joysticka przesunięta w lewo.
W następnym kroku sprawdzany jest warunek czy joystick nie został wciśnięty, realizowane jest to przez iloczyn logiczny zmiennej jkey i maski określającej linie „OK”. W przypadku spełnienia warunku następuje przypisanie do zmiennej jkey wartości 0. Jeśli warunek nie został spełniony, realizowane jest działanie sumy logicznej na zmiennej jkey. W wyniku tego działania ustawiane są odpowiednie bity zmiennej, odpowiadające za konkretne diody LED.
Ostatnim etapem jest ustawienie odpowiednich stanów na liniach, do których podpięty jest moduł z diodami LED. Operacja ta jest realizowana poprzez funkcję io_set_clr_mask. Jako pierwszy parametr przyjmowana jest nazwa portu GPIO, jako druki parametr wartość, której poszczególne bity prezentują linie do ustawienia w stan wysoki (wartość bitu ‘1’) lub w stan niski (wartość bitu ‘0’). Ostatni parametr funkcji jest maską ograniczającą działanie tylko na wskazanych liniach.



Hybrydowe architektury kosmiczne – projektowane z myślą o wydajności i pewności działania
Inżynierowie jutra nie projektują od zera. Jak narzędzia cyfrowe zmieniają pracę nad nowymi technologiami?
Automatyzacja magazynów w Polsce – Exotec i Skypod 


![https://www.youtube.com/watch?v=xeqdqGuy-Aw Michał Mitas, kierownik laboratorium Badań Urządzeń Radiowych w katowickim instytucie Łukasiewicz - AI, opowiada o badaniach urządzeń z interfejsem komunikacji bezprzewodowej, jak Wi-Fi, Bluetooth, LTE czy 5G, przeprowadzanych w komorze bezodbiciowej. Zapraszamy do obejrzenia filmu! [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/10/00.png)

![https://www.youtube.com/watch?v=QSnLO-KmBMY O wybranych projektach realizowanych w Laboratorium Zakładu Układów Mikrofalowych – ISE PW opowiadają: mgr inż. Michał Kalisiak, dr hab. inż. Arkadiusz Lewandowski, mgr inż. Andžej Šerlat oraz dr hab. inż. Krzysztof Czuba. Zapraszamy na firm [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/09/WEiTI-PW-czolowka.png)

