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.

Od wzmacniacza nieodwracającego do integratora i wzmacniacza ładunkowego, czyli historia z zaskakującą pointą jak w dobrym kryminale
Green czy smart? Jak decyzje ESG zaczynają optymalizować procesy produkcyjne
Firma Semicon ma w ofercie narzędzia do obróbki przewodów 

![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)



