[PROJEKT] KA-NUCLEO-F411CE i Waveshare Accessory Shield – obsługa joysticka wraz z diodą RGB
Programowanie funkcji obsługi joysticka
Uzupełnienie plików projektu
Po wygenerowaniu plików projektu i zaimportowaniu ich do programu AC6 należy uzupełnić pliki main.c, oraz stm32f4xx_it.c z projektu. Zawierają one definicję funkcji odpowiedzialnych za sterowanie diodą RGB, którą będziemy sterowali joystickiem. Pliki te można podmienić w eksploratorze plików lub w środowisku AC6. Po podmianie plików dobrze jest skompilować projekt w celu sprawdzenia czy wszystko wykonaliśmy poprawnie.
Programowanie funkcji obsługi przerwań od przycisków
Programowanie funkcji przerwań zewnętrznych odbywa się w pliku main.c – funkcja callback. Są to funkcje odpowiedzialne za realizację obsługi danego przerwania. W naszym przypadku definicję funkcji callback umieścimy w sekcji „Private function prototypes”. Jej postać wygląda następująco:
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(HAL_GPIO_ReadPin(Joy_A_GPIO_Port, Joy_A_Pin) == 0)
{
setColor = 1;
}
if(HAL_GPIO_ReadPin(Joy_B_GPIO_Port, Joy_B_Pin) == 0)
{
setColor = 2;
}
if(HAL_GPIO_ReadPin(Joy_C_GPIO_Port, Joy_C_Pin) == 0)
{
setColor = 3;
}
if(HAL_GPIO_ReadPin(Joy_D_GPIO_Port, Joy_D_Pin) == 0)
{
setColor = 4;
}
}
W funkcji obsługi przerwania sprawdzane jest źródło przerwania, czyli przycisk, od którego wystąpiło przerwanie. Wykonywane jest to za pomocą instrukcji warunkowych. Każdy z przycisków ma za zadanie przypisać do zmiennej „setColor” numer koloru do ustawienia. Działanie funkcji callback wymaga wcześniejszego zdefiniowania zmiennej „setColor” w sekcji „Private variables”.
/* Private variables ---------------------------------------------------------*/ extern uint8_t delayUsCounter; uint8_t setColor = 0; /* USER CODE END PV */
W funkcji głównej main w pętli nieskończonej while tworzymy strukturę składającą się z pięciu instrukcji warunkowych, ustawiających kolor diody RGB w zależności od wybranej opcji za pomocą joysticka.
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
if(setColor == 0)
{
P9813_SetColor(0, 0, 0);
}
if(setColor == 1)
{
P9813_SetColor(255, 0, 0);
}
if(setColor == 2)
{
P9813_SetColor(0, 255, 0);
}
if(setColor == 3)
{
P9813_SetColor(0, 0, 255);
}
if(setColor == 4)
{
P9813_SetColor(255, 255, 255);
}
}
/* USER CODE END 3 */
Ostatnim krokiem jest skompilowanie zmodyfikowanego projektu i wgranie go na płytkę KAnucleo z ekspanderem.

Półprzewodniki mocy z węglika krzemu firmy Infineon wybrane do nowego modelu TOYOTA „bZ4X”
RS PRO: w odpowiedzi na realne potrzeby przemysłu
Platforma JetSys-2010 SFF do wysokowydajnych obliczeń AI-at-the-EDGE w aplikacjach high-end 


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

