LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

[PROJEKT] KA-NUCLEO-F411CE i Waveshare Accessory Shield – obsługa diody RGB i sterownika P9813

Konfiguracja STM32 za pomocą narzędzia CubeMX

Do konfiguracji mikrokontrolera STM32F411CEU6 płytki KA-NUCLEO użyjemy narzędzia CubeMX umożliwiającego szybkie i wygodne skonfigurowanie naszego układu do pracy. CubeMX umożliwia konfigurację wyjść GPIO, jak i wewnętrznych peryferiów takich, jak przetwornik ADC, Timery, DMA, aż po taktowanie rdzenia czy magistrali komunikacyjnych wewnątrz procesora.

Konfigurację rozpoczynamy od utworzenia nowego projektu i wyboru mikrokontrolera z listy dostępnych układów. Poszukujemy na niej wersji STM32F411CEU6. Wybieramy serię STM32F4, linię STM32F411, obudowę UFQFPN48 co doprowadzi nas do ograniczenia listy wyników wyszukiwania do dwóch mikrokontrolerów.

 

Rys. 4. Wybór mikrokontrolera STM32 w programie CubeMX

 Szczegółowy opis narzędzia CubeMX znajduje się w artykule:

STM32Cube graficzny konfigurator STM32

Wybieramy nasz mikrokontroler STM32 i klikamy „OK”. Po utworzeniu projektu przechodzimy do konfiguracji peryferiów w tym źródła taktowania rdzenia procesora i magistral peryferiów. W tym celu z listy po lewej stronie rozwijamy element „RCC” i wybieramy z listy „High Speed Clock (HSE)” opcję „Crystal/Ceramic Resonator”. Wybieramy tym samym zewnętrzne źródło sygnału zegarowego. Możemy to zrobić ponieważ na płytce KA-NUCLEO mamy do dyspozycji podłączony i przylutowany rezonator kwarcowy 8 MHz.

 

Rys. 5. Definiowanie źródła sygnału zegarowego w programie CubeMX

 

Kolejnym krokiem będzie określenie działania wyjść mikrokontrolera, podłączonych do układu sterownika P9813. Jak już wiemy, wejście CIN sterownika LED jest podłączone do linii GPIO PB10, DIN do PB4 i sterowanie zasilaniem diody do PA6. Wykorzystując te informacje przeprowadzamy konfigurację wymienionych pinów GPIO mikrokontrolera. Wykonujemy to za pomocą wyboru pinu mikrokontrolera na grafice i funkcji dostępnych w menu kontekstowym. W naszym przypadku wszystkie piny skonfigurujemy jako GPIO_Output.

 

Rys. 6. Wybór funkcji pinu mikrokontrolera STM32 w programie CubeMX

 

Poprawna konfiguracja GPIO przedstawiona jest na rysunku 7.

 

Rys. 7. Ustawienie pinów do pracy ze sterownikiem LED w programie CubeMX

 

Przechodzimy do zakładki „Clock Configuration” w celu przeprowadzenia konfiguracji częstotliwości taktowania wewnątrz układu. Zaczynamy od zmiany parametru „Input frequency” na 8 MHz (1), wyboru źródła sygnału zegarowego na HSE (2), wyboru użycia pętli zwielokrotniającej częstotliwość PLLCLK (3) i zmianie częstotliwości głównej magistrali (HCLK) mikrokontrolera na maksymalną, czyli 100 MHz (4). Po ostatniej czynności zatwierdzamy zmiany przyciskiem ENTER. Program przeliczy wartości pozostałych parametrów i dokończy konfigurację częstotliwości.

 

Rys. 8. Konfiguracja taktowania zegara i magistral STM32 w programie CubeMX

 

Narzędzie CubeMX umożliwia zdefiniowanie własnych nazw dla używanych pinów GPIO. Nie jest to zabieg konieczny, natomiast bardzo ułatwia pracę w procesie programowania, dzięki czemu wiemy, z jakimi sygnałami mamy do czynienia. Zmianę tą możemy wprowadzić w zakładce „Configuration”. Wybieramy grupę „System” i przycisk „GPIO”. W oknie Pin Configuration zaznaczamy zdefiniowany pin i wprowadzamy dla niego nazwę w polu „User Label” (rysunek 9).

 

Rys. 9. Dodawanie nazw dla pinów w programie CubeMX

 

Ostatnim etapem pracy z CubeMX jest wygenerowanie kodu i plików projektu dla darmowego środowiska programowania STM32 – AC6. Wykonujemy to poprzez zapisanie projektu CubeMX, a następnie wybranie opcji z menu Project -> Generate Code (Ctrl+Shift+G). Nadajemy nazwę dla projektu – dobrze, aby nie miała polskich znaków i spacji np. „KANucleo_WShAccessoryShield_LED” (1). Wybieramy lokalizację projektu, powinna być to lokalizacja workspace programu AC6 (2). Wybieramy środowisko, dla którego generujemy kod, w naszym przypadku będzie to SW4STM32 (3) i klikamy OK (4).

 

Rys. 10. Generowanie plików projektu w programie CubeMX

Autor: Jakub Kuryło