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.

RS PRO: w odpowiedzi na realne potrzeby przemysłu
Platforma JetSys-2010 SFF do wysokowydajnych obliczeń AI-at-the-EDGE w aplikacjach high-end
Hahn EI30 ErP – transformatory sieciowe o niskich stratach mocy 


![https://www.youtube.com/watch?v=kmvM5hVSzCM Piata już edycja konferencji Hardware Design Masterclasses dla elektroników zaskoczyła frekwencją, tym bardziej, że spotkanie było dwudniowe. Film jest krótką relacją z wydarzenia, bazującą na wypowiedziach prelegentów. [materiał redakcyjny] Zapraszamy do obejrzenia!](https://mikrokontroler.pl/wp-content/uploads/2026/01/Rafal-tytulowe.png)

