- Wybieranie i pobieranie wymaganych platform programistycznych dla płyt Nucleo64
- Schemat obwodu i konfiguracja sprzętu
- Pierwsze kroki z STM32CubeMX dla płyt rozwojowych STM32 Nucleo64
- Programowanie płytki rozwojowej STM32 Nucleo64 przy użyciu TrueSTUDIO
- Program STM32 Nucleo64 do sterowania diodami LED za pomocą przycisku
- Debugowanie i przesyłanie kodu do płytki rozwojowej STM32 Necleo64 przy użyciu TrueSTUDIO
Wielu z nas powinno być zaznajomionych z popularnymi mikrokontrolerami i płytkami programistycznymi, takimi jak Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051 itd. W rzeczywistości dla większości ludzi Arduino byłby ich pierwszą płytą rozwojową, ale kiedy sięgamy głębiej i zaczynamy profesjonalne projekty, wkrótce zdamy sobie sprawę z ograniczeń Arduino (takich jak koszt, wszechstronność, stabilność, szybkość itp.) i zrozumiemy potrzebę przejścia na bardziej natywną platformę mikrokontrolera, taką jak PIC, STM, Renesas itp.
Omówiliśmy już sekwencję samouczków dotyczących mikrokontrolerów PIC, które prowadzą początkujących do nauki mikrokontrolerów PIC. Podobnie, zaczynając od tego artykułu, zaplanujemy również sekwencję samouczków STM32 Nucleo64 Development Board, które mogą pomóc absolutnie początkującym w nauce i rozwoju przy użyciu Platformy STM32. Płytki rozwojowe Nucleo64 to niedroga i łatwa w użyciu platforma dla profesjonalnych programistów, a także dla hobbystów. Jeśli nie znasz jeszcze płyt rozwojowych STM32 Nucleo64, obejrzyj ten film przeglądowy Nucleo64, aby poznać podstawy tej płyty, zanim przejdziesz dalej. Film pokazuje również, jak programować STM32 przy użyciu platformy ARM Mbed ale w tym samouczku użyjemy innej bezpłatnej platformy firmy ST Microelectronics o nazwie TrueSTUDIO.
Uwaga: istnieje wiele wersji płyt rozwojowych STM32 Nucleo64, konkretna płyta używana w tym samouczku to NUCLEO-F030R8. Wybraliśmy tę płytę głównie ze względu na jej niski koszt. Nawet jeśli masz inną wersję, większość rzeczy omówionych w samouczku wystarczy, aby rozpocząć.
Wybieranie i pobieranie wymaganych platform programistycznych dla płyt Nucleo64
Rozpoczęcie pracy z dowolnym mikrokontrolerem będzie wymagało programowania IDE, takiego jak Arduino IDE dla płyt Arduino, Atmel Studio dla mikrokontrolera AVR, MP Lab dla PIC itp. Więc tutaj potrzebujemy również IDE dla naszych płyt STM32 Nucleo64 do programowania i debugowania. Rodzina STM32 składa się z 32-bitowych mikrokontrolerów obsługujących następujące środowiska IDE i łańcuchy narzędzi:
- IAR Embedded Workbench® for ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- System Workbench dla STM32
Tutaj, w naszych samouczkach, TrueSTUDIO będzie używane do pisania, kompilowania i debugowania kodu, ponieważ można go pobrać i używać bezpłatnie nawet w przypadku projektów komercyjnych bez konieczności posiadania licencji. Następnie STM32CubeMX zostanie użyty do wygenerowania sterowników urządzeń peryferyjnych dla płyt STM32, aby ułatwić programowanie. Aby przesłać nasz program (plik hex) na naszą płytkę programistyczną, ludzie zwykle używają narzędzia STM32 ST-LINK Utility, ale zamiast tego będziemy używać do tego samego TrueSTUDIO. TrueSTUDIO ma tryb debugowania, który umożliwia programistom przesyłanie pliku hex bezpośrednio do płyty STM32. Zarówno TrueSTUIO, jak i STM32CubeMX można łatwo pobrać, wystarczy kliknąć poniższy link, zarejestrować się i pobrać konfigurację. Następnie zainstaluj je na swoim laptopie.
- Pobierz STM32Cube MX
- Pobierz TrueSTUDIO
Schemat obwodu i konfiguracja sprzętu
Zanim przejdziemy do sekcji oprogramowania i kodowania, przygotujmy naszą płytkę do tego projektu. Jak wspomniano wcześniej w tym artykule, będziemy sterować diodą LED za pomocą przycisku. Teraz, jeśli widziałeś powyższe wideo, powinieneś już wiedzieć, że twoja płytka rozwojowa STM32 ma dwa zestawy pinów złącza po obu stronach zwane pinami ST Morpho. Podłączyliśmy przycisk i diodę LED do tych pinów, jak pokazano na schemacie poniżej.
Połączenia obwodów są łatwe dla tego projektu, musimy podłączyć diodę LED na PA5 PORTA i przełącznik na PC13 PORTC w odniesieniu do GND. Po wykonaniu połączeń moja konfiguracja testowa wyglądała tak.
Alternatywnie możemy również skorzystać z wbudowanej diody LED i przycisku na płytce. Te wbudowane diody LED i przycisk są również podłączone do tego samego pinu, jak pokazano na schemacie obwodu. Dodaliśmy zewnętrzne komponenty tylko do ćwiczeń. Poniższy schemat pinów płytki rozwojowej STM32 przyda się, aby dowiedzieć się, gdzie są podłączone poszczególne piny morpho na płycie.
Pierwsze kroki z STM32CubeMX dla płyt rozwojowych STM32 Nucleo64
Krok 1: Po instalacji uruchom STM32CubeMX, a następnie wybierz kartę dostępu, aby wybrać kartę STM32.
Krok 2: Teraz wyszukaj tablicę według nazwy płyty STM32, takiej jak NUCLEO-F030R8, i kliknij tablicę pokazaną na obrazku. Jeśli masz inną tablicę, wyszukaj jej nazwę. Oprogramowanie będzie obsługiwać wszystkie płytki rozwojowe STM32 firmy ST Microelectronics.
Krok 3: Teraz kliknij tak, jak pokazano na poniższym obrazku, aby zainicjować wszystkie urządzenia peryferyjne w ich domyślnym trybie. Możemy później zmienić te wymagane zgodnie z potrzebami naszego projektu.
Po kliknięciu „Tak”, ekran będzie podobny do poniższego obrazu i zielona pinezka wskazująca, że są one domyślnie inicjowane.
Krok 4: Teraz użytkownicy mogą wybrać żądane ustawienie z kategorii. Tutaj, w tym samouczku, będziemy przełączać diodę LED za pomocą przycisku. Musimy więc uczynić pin LED jako wyjście i pin przełącznika jako INPUT.
Możesz wybrać dowolny pin, ale wybieram PA5 i zmieniam jego stan na GPIO_Output, aby działał jako pin wyjściowy, jak pokazano na poniższym obrazku.
Podobnie, wybieram PC13 jako GPIO_Input, aby móc odczytać stan mojego przycisku.
Alternatywnie możemy również skonfigurować piny z zakładki pinout i konfiguracji, jak pokazano poniżej.
Krok 5: W następnym kroku użytkownik może ustawić żądaną częstotliwość dla mikrokontrolera i pinów zgodnie z zewnętrznym i wewnętrznym oscylatorem. Domyślnie wybierany jest wewnętrzny oscylator kwarcowy 8 MHz, który przy użyciu PLL jest konwertowany na 48 MHz. Oznacza to, że domyślnie płyta STM32 lub mikrokontroler i Piny będą działać na 48MHz.
Krok 6: Teraz przejdź do menadżera projektu i nadaj nazwę swojemu projektowi, lokalizację projektu i wybierz toolchain lub IDE. Tutaj używamy TrueSTUDIO, więc wybrałem to samo, co pokazano poniżej.
Krok 7: Teraz kliknij znak Generuj kod przy czerwonym kółku na poniższym obrazku.
Krok 8: Teraz zobaczysz wyskakujące okienko, jak podano, a następnie kliknij otwarty projekt. Ale upewnij się, że zainstalowałeś TrueSTUDIO przed tym krokiem.
Programowanie płytki rozwojowej STM32 Nucleo64 przy użyciu TrueSTUDIO
Teraz twój kod lub projekt otworzy się automatycznie w TrueSTUDIO, jeśli TrueSTUDIO zapyta o lokalizację obszaru roboczego, a następnie podaj lokalizację obszaru roboczego lub przejdź do domyślnej lokalizacji.
Użytkownik zobaczy poniższy ekran, a następnie będzie musiał kliknąć znak narożny w kolorze czerwonym.
A teraz widzimy kod w naszym TreuSTUDIO IDE. Po lewej stronie pod folderem 'src' widzimy inne pliki programów (z rozszerzeniem.c), które zostały już dla nas wygenerowane z STM32Cube. Musimy tylko zaprogramować plik main.c. Nawet w pliku main.c mamy już kilka rzeczy ustawionych dla nas przez CubeMX, musimy tylko edytować go tak, aby pasował do naszego programu. Pełny kod w pliku main.c znajduje się na dole tej strony.
Program STM32 Nucleo64 do sterowania diodami LED za pomocą przycisku
Ponieważ cały wymagany sterownik i kod są generowane przez STM32CubeMX, musimy tylko skonfigurować pin LED jako wyjście i przycisk jako wejście. Program do sterowania diodami za pomocą przycisku należy zapisać w pliku main.c. Cały program można znaleźć na dole tej strony. Wyjaśnienie jest następujące
Napisaliśmy tylko kod do przełączania diody LED za pomocą przycisku. Aby to osiągnąć, najpierw definiujemy piny dla diody LED i przycisków. Tutaj zdefiniowaliśmy diodę LED na Pin 5 numeru PORTA
# zdefiniować LED_PORT GPIOA # zdefiniować LED_PIN GPIO_PIN_5
I zdefiniuj przełącznik na Pin numer 13 PORTC.
# zdefiniować SW_PORT GPIOC # zdefiniować SW_PIN GPIO_PIN_13
Następnie w funkcji głównej zainicjowaliśmy wszystkie używane urządzenia peryferyjne.
/ * Inicjalizuj wszystkie skonfigurowane urządzenia peryferyjne * / MX_GPIO_Init (); MX_USART2_Init ();
Następnie przeczytaj przycisk, używając instrukcji if, a jeśli zostanie znaleziony, naciśnij (LOW), a dioda LED przełączy jego stan.
While (1) {/ * USER CODE END WHILE * / If (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * KOD UŻYTKOWNIKA POCZĄTEK 3 * /}
Tutaj funkcja HAL_GPIO_ReadPin (SW_PORT, SW_PIN) ma dwa argumenty, jeden to PORT, a drugi to pin, do którego podłączony jest przełącznik i ten pin jest skonfigurowany jako INPUT podczas konfiguracji urządzenia peryferyjnego w STM32CubeMX.
Debugowanie i przesyłanie kodu do płytki rozwojowej STM32 Necleo64 przy użyciu TrueSTUDIO
Teraz podłącz swoją płytkę do komputera za pomocą kabla programatora. Po podłączeniu sterownik wymagany dla płyty powinien zostać automatycznie pobrany, możesz to sprawdzić za pomocą menedżera urządzeń.
Następnie naciśnij ikonę debugowania oznaczoną czerwonym kółkiem na poniższym obrazku, aby skompilować program i wejść w tryb debugowania.
W trybie debugowania kod zostanie przesłany automatycznie. Teraz musimy uruchomić kod, naciskając klawisz „Wznów” lub F8 (zaznaczony czerwonym obwodem na poniższym obrazku).
Teraz możemy przetestować sterowanie diodą LED naciskając przycisk. Zgodnie z kodem dioda LED powinna zmieniać swój stan po każdym naciśnięciu przycisku. Całość pracy można również znaleźć w wideo, do którego link znajduje się na dole tej strony.
Po przetestowaniu możemy również zakończyć program naciskając ikonę zakończenia, zaznaczoną czerwonym kółkiem na poniższym obrazku.