- ST-LINK V2
- STM32CubeMX
- Wymagane materiały
- Schemat obwodu i połączenia
- Tworzenie i wypalanie programu do STM32 przy użyciu Keil uVision i ST-Link
- Wyjście z zaprogramowanej płytki STM32 firmy Keil
- Program
Mikrokontrolery STM32 wykorzystujące architekturę ARM Cortex M stają się obecnie popularne i są używane w wielu aplikacjach ze względu na swoją funkcję, koszt i wydajność. Zaprogramowaliśmy STM32F103C8 za pomocą Arduino IDE w naszych poprzednich samouczkach. Programowanie STM32 z Arduino IDE jest proste, ponieważ dostępnych jest wiele bibliotek dla różnych czujników do wykonania dowolnego zadania, wystarczy dodać te biblioteki w programie. Jest to łatwa procedura i możesz nie zagłębić się w głębokie poznanie procesorów ARM. Więc teraz przechodzimy do następnego poziomu programowania zwanego programowaniem ARM. W ten sposób możemy nie tylko ulepszyć naszą strukturę kodu, ale także oszczędzić miejsce w pamięci, nie używając niepotrzebnych bibliotek.
Firma STMicroelectronics wprowadziła narzędzie o nazwie STM32Cube MX, które generuje podstawowy kod zgodnie z urządzeniami peryferyjnymi i wybraną płytką STM32. Nie musimy więc martwić się o kodowanie podstawowych sterowników i urządzeń peryferyjnych. Ponadto ten wygenerowany kod może być użyty w Keil uVision do edycji zgodnie z wymaganiami. I na koniec kod jest wypalany do STM32 za pomocą programatora ST-Link firmy STMicroelectronics.
W tym samouczku nauczymy się, jak zaprogramować STM32F103C8 za pomocą Keil uVision i STM32CubeMX, wykonując prosty projekt połączenia przycisku i diody LED z płytą STM32F103C8 Blue Pill. Wygenerujemy kod za pomocą STM32Cube MX, a następnie wyedytujemy i prześlemy kod do STM32F103C8 za pomocą Keil uVision. Zanim przejdziemy do szczegółów, najpierw dowiemy się o programatorze ST-LINK i narzędziu programowym STM32CubeMX.
ST-LINK V2
ST-LINK / V2 jest debugger w obwodzie i programista dla STM8 i STM32 rodzin mikrokontrolerów. Możemy przesłać kod do STM32F103C8 i innych mikrokontrolerów STM8 i STM32 za pomocą tego ST-LINK. Jednoprzewodowy moduł interfejsu (SWIM) i interfejsy JTAG / serial wire debugging (SWD) służą do komunikacji z dowolnym mikrokontrolerem STM8 lub STM32 umieszczonym na płytce aplikacji. Ponieważ aplikacje STM32 używają interfejsu USB o pełnej szybkości do komunikacji ze zintegrowanymi środowiskami programistycznymi Atollic, IAR, Keil lub TASKING, możemy użyć tego sprzętu do programowania mikrokontrolerów STM 8 i STM32.
Powyżej znajduje się obraz klucza sprzętowego ST-LINK V2 firmy STMicroelectronics, który obsługuje pełną gamę interfejsu debugowania STM32 SWD, prosty 4-przewodowy interfejs (w tym zasilanie), szybki i stabilny. Jest dostępny w różnych kolorach. Korpus wykonany jest ze stopu aluminium. Posiada niebieską diodę LED, która służy do obserwacji stanu pracy ST-LINK. Nazwy pinów są wyraźnie zaznaczone na powłoce, jak widać na powyższym obrazku. Może być połączony z oprogramowaniem Keil, gdzie program może być przesłany do mikrokontrolerów STM32. Zobaczmy więc w tym samouczku, jak ten programator ST-LINK może być użyty do programowania mikrokontrolera STM32. Poniższy obrazek przedstawia piny modułu ST-LINK V2.
Uwaga: Przy pierwszym podłączeniu ST-Link do komputera, musimy zainstalować sterownik urządzenia. Sterowniki urządzeń można znaleźć w tym łączu, zgodnie z systemem operacyjnym.
STM32CubeMX
Narzędzie STM32CubeMX jest częścią STMicroelectronics STMCube. To narzędzie programowe ułatwia rozwój poprzez zmniejszenie nakładu pracy, czasu i kosztów. STM32Cube zawiera STM32CubeMX, które jest graficznym narzędziem do konfiguracji oprogramowania, które umożliwia generowanie kodu inicjalizacyjnego C za pomocą graficznych kreatorów. Ten kod może być używany w różnych środowiskach programistycznych, takich jak keil uVision, GCC, IAR itp. Możesz pobrać to narzędzie z poniższego łącza.
STM32CubeMX ma następujące funkcje
- Wysuń narzędzie do rozwiązywania konfliktów
- Pomocnik do ustawiania drzewa zegara
- Kalkulator zużycia energii
- Narzędzie wykonujące konfigurację urządzeń peryferyjnych MCU, takich jak piny GPIO, USART itp
- Narzędzie wykonujące konfigurację urządzeń peryferyjnych MCU dla stosów oprogramowania pośredniego, takich jak USB, TCP / IP itp
Wymagane materiały
Sprzęt komputerowy
- Płyta STM32F103C8 Blue Pill
- ST-LINK V2
- Naciśnij przycisk
- DOPROWADZIŁO
- Płytka prototypowa
- Przewody połączeniowe
Oprogramowanie
- Narzędzie do generowania kodu STM32CubeMX (łącze)
- Keil uVision 5 (łącze)
- Sterowniki do ST-Link V2 (link)
Schemat obwodu i połączenia
Poniżej znajduje się schemat obwodu, aby po prostu połączyć diodę LED z płytą STM32 za pomocą przycisku.
Połączenie między ST-LINK V2 i STM32F103C8
Tutaj płyta STM32 Blue Pill jest zasilana z ST-LINK, który jest podłączony do portu USB komputera. Nie musimy więc oddzielnie zasilać STM32. Poniższa tabela przedstawia połączenie między ST-Link a płytą Blue pill.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3 V. |
LED i przycisk
Dioda LED jest używana do wskazywania wyjścia z płytki Blue Pill po naciśnięciu przycisku. Anoda diody LED jest podłączona do styku PC13 płytki Blue Pill, a katoda jest uziemiona.
Przycisk jest połączony wkład do pin PA1 Blue Pill pokładzie. Musimy również użyć rezystora podciągającego o wartości 10k, ponieważ pin może pływać bez żadnego wejścia po zwolnieniu przycisku. Jeden koniec przycisku jest podłączony do masy, a drugi do pinu PA1, a rezystor podciągający 10k jest również podłączony do 3,3 V płytki Blue Pill.
Tworzenie i wypalanie programu do STM32 przy użyciu Keil uVision i ST-Link
Krok 1: - Najpierw zainstaluj wszystkie sterowniki urządzeń dla ST-LINK V2, narzędzia programowe STM32Cube MX i Keil uVision oraz zainstaluj niezbędne pakiety dla STM32F103C8.
Krok 2: - Drugi krok to Otwórz >> STM32Cube MX
Krok 3: - Następnie kliknij Nowy projekt
Krok 4: - Następnie wyszukaj i wybierz nasz mikrokontroler STM32F103C8
Krok 5: - Teraz pojawia się szkic wyprowadzeń STM32F103C8, tutaj możemy ustawić konfiguracje pinów. Możemy również wybrać nasze piny w sekcji peryferia zgodnie z naszym projektem.
Krok 6: - Możesz także kliknąć pin bezpośrednio, a pojawi się lista, teraz wybierz wymaganą konfigurację pinów.
Krok 7: - Dla naszego projektu wybraliśmy PA1 jako GPIO INPUT, PC13 jako GPIO OUTPUT i debugowanie SYS jako SERIAL WIRE, tutaj tylko łączymy styki ST-LINK SWCLK i SWDIO. Wybrane i skonfigurowane piny pojawią się w ZIELONYM kolorze. Możesz zauważyć, że na poniższym obrazku.
Krok 8: - Następnie w zakładce Konfiguracja wybierz GPIO, aby ustawić konfiguracje pinów GPIO dla wybranych przez nas pinów.
Krok 9: - Następnie w tym polu konfiguracji pinów możemy skonfigurować etykietę użytkownika dla pinów, których używamy, czyli nazwy pinów zdefiniowane przez użytkownika.
Krok 10: - Następnie kliknij Projekt >> Wygeneruj kod .
Krok 11: - Teraz pojawi się okno dialogowe ustawień projektu. W tym polu wybierz nazwę projektu i lokalizację oraz wybierz środowisko programistyczne. Używamy Keil, więc wybierz MDK-ARMv5 jako IDE.
Krok 12: - Dalej pod Code Generator zakładki, wybierz kopiować tylko niezbędne pliki biblioteki , a następnie kliknij przycisk OK.
Krok 13: - Teraz pojawia się okno dialogowe generowania kodu. Wybierz opcję Otwórz projekt, aby automatycznie otworzyć projekt wygenerowany kod w Keil uvsion.
Krok 14: - Teraz narzędzie Keil uVision otwiera się z naszym wygenerowanym kodem w STM32CubeMx z tą samą nazwą projektu z niezbędną biblioteką i kodami skonfigurowanymi dla wybranych przez nas pinów.
Krok 15: - Teraz musimy tylko załączyć logikę, aby wykonać jakąś akcję na wyjściowej diodzie LED (pin PC13) po naciśnięciu i zwolnieniu przycisku na wejściu GPIO (pin PA1). Wybierz więc nasz program main.c, aby dołączyć kilka kodów.
Krok 16: - Teraz dodaj kod w pętli while (1) , zobacz poniższy obraz, na którym zaznaczyłem tę sekcję, aby kod był uruchamiany w sposób ciągły.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Przycisk DETECTS jest wciśnięty {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Aby wyjście było wysokie po naciśnięciu przycisku} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Aby wyjście było niskie po naciśnięciu przycisku}}
Krok 17: - Po zakończeniu edycji kodu kliknij ikonę Options for Target w zakładce debug wybierz ST-LINK Debugger
Ponadto kliknij przycisk Ustawienia , a następnie w zakładce Flash Download zaznacz pole wyboru Reset and Run i kliknij „ok”.
Krok 18: - Teraz kliknij ikonę Odbuduj, aby odbudować wszystkie pliki docelowe.
Krok 19: - Teraz możesz podłączyć ST-LINK do komputera z gotowymi połączeniami obwodu i kliknąć ikonę POBIERZ lub nacisnąć F8, aby flashować STM32F103C8 kodem, który wygenerowałeś i edytowałeś.
Krok 20: - Możesz zauważyć migające wskazanie u dołu okna keil uVision.
Wyjście z zaprogramowanej płytki STM32 firmy Keil
Teraz, kiedy wciskamy przycisk, włącza się dioda LED, a kiedy ją puszczamy, dioda gaśnie.
Program
Poniżej przedstawiono główną część, którą dodaliśmy do wygenerowanego programu. Poniższy kod musi być zawarty w while (1 ) programu main.c generowanego przez STM32CubeMX. Możesz wrócić do kroku 15 do kroku 17, aby dowiedzieć się, jak należy go dodać w programie main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Przycisk DETECTS jest wciśnięty {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Aby wyjście było wysokie po naciśnięciu przycisku} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Aby wyjście było niskie po naciśnięciu przycisku}}
Pełny proces tworzenia i wgrywania projektu na płytę STM32 jest również wyjaśniony w wideo podanym na końcu. Również pełny kod pliku main.c jest podany poniżej, w tym podany powyżej kod.
Ponadto, tutaj można znaleźć nasz pełny zestaw projektów STM32.