[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.

Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć
Fotorezystor, czyli czujnik światła dwojakiego działania. Przykład innowacji w automatyce i elektronice możliwej dzięki technologii fotooporników 



