- ST-LINK V2
- STM32CubeMX
- Potřebné materiály
- Schéma zapojení a zapojení
- Vytvoření a vypálení programu do STM32 pomocí Keil uVision a ST-Link
- Výstup desky Keil Programmed STM32
- Program
Mikrokontroléry STM32, které používají architekturu ARM Cortex M, se nyní stávají populární a jsou používány v mnoha aplikacích kvůli svým vlastnostem, nákladům a výkonu. V našich předchozích cvičeních jsme naprogramovali STM32F103C8 pomocí Arduino IDE. Programování STM32 s Arduino IDE je jednoduché, protože je k dispozici spousta knihoven pro různé senzory pro provádění jakéhokoli úkolu, stačí tyto knihovny přidat do programu. Jedná se o snadný postup a možná se nedostanete do hlubokého poznání procesorů ARM. Nyní se tedy dostáváme do další úrovně programování, která se nazývá programování ARM. Tímto způsobem můžeme nejen vylepšit naši strukturu kódu, ale také ušetřit paměťový prostor tím, že nebudeme používat zbytečné knihovny.
Společnost STMicroelectronics představila nástroj s názvem STM32Cube MX, který generuje základní kód podle periferií a vybrané desky STM32. Takže si nemusíme dělat starosti s kódováním základních ovladačů a periferií. Tento generovaný kód lze dále použít v Keil uVision pro úpravy podle požadavků. A nakonec je kód vypálen do STM32 pomocí programátoru ST-Link od STMicroelectronics.
V tomto tutoriálu se naučíme programovat STM32F103C8 pomocí Keil uVision & STM32CubeMX jednoduchým projektem propojení tlačítka a LED s deskou STM32F103C8 Blue Pill. Vygenerujeme kód pomocí STM32Cube MX, poté jej upravíme a nahrajeme do STM32F103C8 pomocí Keil uVision. Než se dostaneme do podrobností, nejprve se seznámíme s programátorem ST-LINK a softwarovým nástrojem STM32CubeMX.
ST-LINK V2
ST-LINK / V2 je debugger v obvodu a programátor pro mikrořadičů STM8 a STM32. Pomocí tohoto ST-LINK můžeme nahrát kód do STM32F103C8 a dalších mikrokontrolérů STM8 a STM32. Jednodrátový modul rozhraní (SWIM) a rozhraní JTAG / ladění sériového drátu (SWD) se používají ke komunikaci s jakýmkoli mikrokontrolérem STM8 nebo STM32 umístěným na aplikační desce. Jelikož aplikace STM32 používají pro komunikaci s integrovaným vývojovým prostředím Atollic, IAR, Keil nebo TASKING rozhraní USB s plnou rychlostí, můžeme tento hardware použít k programování mikrokontrolérů STM 8 a STM32.
Nahoře je obrázek hardwarového klíče ST-LINK V2 od společnosti STMicroelectronics, který podporuje celou řadu ladicích rozhraní SWM STM32, jednoduché čtyřvodičové rozhraní (včetně napájení), rychlé a stabilní. Je k dispozici v různých barvách. Tělo je vyrobeno z hliníkové slitiny. Má modrou LED indikaci, protože se používá ke sledování pracovního stavu ST-LINK. Názvy pinů jsou na skořápce jasně označeny, jak vidíme na obrázku výše. Může být propojen se softwarem Keil, kde může být program přenesen do mikrokontrolérů STM32. Podívejme se tedy v tomto tutoriálu, jak lze tento programátor ST-LINK použít k programování mikrokontroléru STM32. Níže uvedený obrázek ukazuje piny modulu ST-LINK V2.
Poznámka: Při prvním připojení ST-Link k počítači. Potřebujeme nainstalovat ovladač zařízení. Ovladače zařízení najdete v tomto odkazu podle vašeho operačního systému.
STM32CubeMX
Nástroj STM32CubeMX je součástí STMicroelectronics STMCube. Tento softwarový nástroj usnadňuje vývoj snížením vývojového úsilí, času a nákladů. STM32Cube obsahuje STM32CubeMX, což je grafický softwarový konfigurační nástroj, který umožňuje generování inicializačního kódu C pomocí grafických průvodců. Tento kód lze použít v různých vývojových prostředích, jako je keil uVision, GCC, IAR atd. Tento nástroj si můžete stáhnout z následujícího odkazu.
STM32CubeMX má následující funkce
- Vyřešte řešení konfliktů
- Pomocník pro nastavení hodinového stromu
- Kalkulačka spotřeby energie
- Nástroj provádějící periferní konfiguraci MCU, jako jsou piny GPIO, USART atd
- Nástroj provádějící periferní konfiguraci MCU pro zásobníky middlewaru jako USB, TCP / IP atd
Potřebné materiály
Hardware
- STM32F103C8 modrá pilulka
- ST-LINK V2
- Stiskněte tlačítko
- VEDENÝ
- Nepájivá deska
- Propojovací dráty
Software
- Nástroj pro generování kódu STM32CubeMX (odkaz)
- Keil uVision 5 (odkaz)
- Ovladače pro ST-Link V2 (odkaz)
Schéma zapojení a zapojení
Níže je schéma zapojení pro jednoduché připojení LED k desce STM32 pomocí tlačítka.
Propojení mezi ST-LINK V2 a STM32F103C8
Zde je deska STM32 Blue Pill napájena z ST-LINK, který je připojen k USB portu počítače. STM32 tedy nemusíme napájet samostatně. Níže uvedená tabulka ukazuje spojení mezi ST-Link a Blue Pill Board.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3 V |
LED a tlačítko
LED se používá k indikaci výstupu z desky Blue Pill po stisknutí tlačítka. Anoda LED je připojena ke kolíku PC13 desky Blue Pill a katoda je uzemněna.
Je připojeno tlačítko, které poskytuje vstup na pin PA1 desky Blue Pill. Musíme také použít pull up rezistor s hodnotou 10k, protože pin by se mohl uvolnit bez jakéhokoli vstupu, když je tlačítko uvolněno. Jeden konec tlačítka je připojen k zemi a druhý konec k pinu PA1 a vytahovací odpor 10k je také připojen k 3,3 V desky Blue Pill.
Vytvoření a vypálení programu do STM32 pomocí Keil uVision a ST-Link
Krok 1: - Nejprve nainstalujte všechny ovladače zařízení pro ST-LINK V2, softwarové nástroje STM32Cube MX a Keil uVision a nainstalujte potřebné balíčky pro STM32F103C8.
Krok 2: - Druhým krokem je Otevřít >> STM32Cube MX
Krok 3: - Poté klikněte na Nový projekt
Krok 4: - Poté vyhledejte a vyberte náš mikrokontrolér STM32F103C8
Krok 5: - Nyní se objeví náčrt pin-out STM32F103C8, zde můžeme nastavit konfigurace pinů. Můžeme také vybrat naše piny v sekci periferií podle našeho projektu.
Krok 6: - Můžete také kliknout přímo na pin a zobrazí se seznam, nyní vyberte požadovanou konfiguraci pinů.
Krok 7: - Pro náš projekt jsme vybrali PA1 jako GPIO INPUT, PC13 jako GPIO OUTPUT & SYS debug jako SERIAL WIRE, zde pouze připojujeme piny ST-LINK SWCLK & SWDIO. Vybrané a nakonfigurované piny se zobrazí v ZELENÉ barvě. Můžete si to všimnout na následujícím obrázku.
Krok 8: - Dále na kartě Konfigurace vyberte GPIO a nastavte konfigurace pinů GPIO pro piny, které jsme vybrali.
Krok 9: - Dále v tomto konfiguračním poli pinů můžeme nakonfigurovat uživatelský štítek pro piny, které používáme, tj. Uživatelem definované názvy pinů.
Krok 10: - Poté klikněte na Project >> Generate Code .
Krok 11: - Nyní se zobrazí dialogové okno nastavení projektu. V tomto poli vyberte název a umístění projektu a vyberte vývojové prostředí. Používáme Keil, proto vyberte MDK-ARMv5 jako IDE.
Krok 12: - Next pod Code Generator kartě, vyberte zkopírovat pouze potřebné soubory knihovny a potom klepněte na tlačítko OK.
Krok 13: - Nyní se zobrazí dialogové okno pro generování kódu. Vyberte Otevřít projekt pro automatické otevření projektu vygenerovaného kódu v Keil uvsion.
Krok 14: - Nyní se nástroj Keil uVision otevře s naším vygenerovaným kódem v STM32CubeMx se stejným názvem projektu s potřebnou knihovnou a kódy, které jsou nakonfigurovány pro piny, které jsme vybrali.
Krok 15: - Nyní stačí zahrnout logiku pro provedení nějaké akce na výstupní LED (pin PC13), když je tlačítko stisknuto a uvolněno na vstupu GPIO (pin PA1). Vyberte tedy náš program main.c, který obsahuje některé kódy.
Krok 16: - Nyní přidejte kód do smyčky while (1) , viz následující obrázek, kde jsem zvýraznil tuto část, aby se kód spouštěl nepřetržitě.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Je stisknuto tlačítko DETECTS {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Chcete-li dosáhnout vysokého výstupu při stisknutí tlačítka,} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Chcete-li, aby výstup byl nízký po stisknutí tlačítka}}
Krok 17: - Po dokončení úprav kódu klikněte na ikonu Možnosti pro cíl na kartě ladění vyberte ST-LINK Debugger
Také klikněte na tlačítko Nastavení a poté na kartě Stažení Flash zaškrtněte políčko Obnovit a spustit a klikněte na „ok“.
Krok 18: - Nyní klikněte na ikonu Znovu sestavit a znovu sestavte všechny cílové soubory.
Krok 19: - Nyní můžete připojit ST-LINK k počítači s připraveným připojením obvodu a kliknout na ikonu DOWNLOAD nebo stisknout F8, aby se STM32F103C8 rozsvítil kódem, který jste vygenerovali a upravili.
Krok 20: - Můžete si všimnout blikající indikace ve spodní části okna keil uVision.
Výstup desky Keil Programmed STM32
Nyní, když stiskneme tlačítko, LED se rozsvítí a když jej uvolníme, LED zhasne.
Program
Níže je uvedena hlavní část, kterou jsme přidali do generovaného programu. Tato pod potřeb kódů, které mají být zahrnuty do while (1 ) ze dne main.c programu vytvořeného STM32CubeMX. Můžete se vrátit zpět na krok 15 až krok 17, kde se dozvíte, jak by měl být přidán do programu main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Je stisknuto tlačítko DETECTS {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Chcete-li dosáhnout vysokého výstupu při stisknutí tlačítka,} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Chcete-li, aby výstup byl nízký po stisknutí tlačítka}}
Celý proces vytváření a nahrávání projektu na desku STM32 je vysvětlen také ve videu na konci. Níže je uveden také kompletní kód souboru main.c včetně výše uvedeného kódu.
Dále zde najdete naši kompletní sadu projektů STM32.