[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.
![](https://mikrokontroler.pl/wp-content/uploads/2017/02/mx1.png)
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.
![](https://mikrokontroler.pl/wp-content/uploads/2017/02/mx2.png)
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.
![](https://mikrokontroler.pl/wp-content/uploads/2017/02/mx3.png)
Rys. 6. Wybór funkcji pinu mikrokontrolera STM32 w programie CubeMX
Poprawna konfiguracja GPIO przedstawiona jest na rysunku 7.
![](https://mikrokontroler.pl/wp-content/uploads/2017/02/mx4.png)
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.
![](https://mikrokontroler.pl/wp-content/uploads/2017/02/mx5.png)
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).
![](https://mikrokontroler.pl/wp-content/uploads/2017/02/mx6.png)
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).
![](https://mikrokontroler.pl/wp-content/uploads/2017/02/mx7.png)
Rys. 10. Generowanie plików projektu w programie CubeMX