- ST-LINK V2
- STM32CubeMX
- Nødvendige materialer
- Kredsløbsdiagram og forbindelser
- Oprettelse og brænding af et program i STM32 ved hjælp af Keil uVision og ST-Link
- Output fra Keil Programmed STM32 Board
- Program
STM32 Microcontrollers, der bruger ARM Cortex M- arkitektur, bliver nu populær og bruges i mange applikationer på grund af dens funktion, pris og ydeevne. Vi har programmeret STM32F103C8 ved hjælp af Arduino IDE i vores tidligere tutorials. Programmering af STM32 med Arduino IDE er enkel, da der er mange biblioteker til rådighed for forskellige sensorer til at udføre enhver opgave, vi skal bare tilføje disse biblioteker i programmet. Dette er en nem procedure, og du kommer måske ikke ind i dyb læring om ARM-processorer. Så nu kommer vi ind på det næste niveau af programmering kaldet ARM programmering. Ved dette kan vi ikke kun forbedre vores kodestruktur, men vi kan også spare hukommelsesplads ved ikke at bruge unødvendige biblioteker.
STMicroelectronics introducerede et værktøj kaldet STM32Cube MX, der genererer grundlæggende kode i henhold til periferiudstyr og det valgte STM32-kort. Så vi behøver ikke bekymre os om kodning af grundlæggende drivere og perifert udstyr. Desuden kan denne genererede kode bruges i Keil uVision til redigering i henhold til krav. Og til sidst er koden brændt ind i STM32 ved hjælp af ST-Link programmerer fra STMicroelectronics.
I denne vejledning lærer vi, hvordan man programmerer STM32F103C8 ved hjælp af Keil uVision & STM32CubeMX ved at udføre et simpelt projekt for at interfacere en trykknap og LED med STM32F103C8 Blue Pill Board. Vi genererer koden ved hjælp af STM32Cube MX og redigerer og uploader koden til STM32F103C8 ved hjælp af Keil uVision. Før vi går i detaljer, lærer vi først om ST-LINK programmør og STM32CubeMX softwareværktøj.
ST-LINK V2
Den ST-LINK / V2 er en in-circuit debugger og programmør for STM8 og STM32 microcontroller familier. Vi kan uploade kode til STM32F103C8 og andre STM8 & STM32 mikrokontroller ved hjælp af denne ST-LINK. Single wire interface module (SWIM) og JTAG / serial wire debugging (SWD) interfaces bruges til at kommunikere med enhver STM8 eller STM32 mikrocontroller, der findes på et applikationskort. Da STM32-applikationer bruger USB-interface med fuld hastighed til at kommunikere med Atollic-, IAR-, Keil- eller TASKING-integrerede udviklingsmiljøer, så vi kan bruge denne hardware til at programmere STM 8 & STM32-mikrocontrollere.
Ovenstående er billedet af ST-LINK V2-dongle fra STMicroelectronics, der understøtter hele spektret af STM32 SWD-fejlfindingsgrænseflade, en simpel 4-leder-interface (inklusive strøm), hurtig og stabil. Den fås i forskellige farver. Kroppen er lavet af aluminiumslegering. Den har en blå LED-indikation, da den bruges til at observere ST-LINK's driftstilstand. Stiftenavnene er tydeligt markeret på skallen, som vi kan se i ovenstående billede. Det kan grænseflade med Keil-softwaren, hvor programmet kan blinkes til STM32-mikrocontrollere. Så lad os se i denne vejledning, hvordan denne ST-LINK programmør kan bruges til at programmere STM32 mikrokontroller. Billedet nedenfor viser stifterne på ST-LINK V2-modulet.
Bemærk: Når ST-Link tilsluttes computeren for første gang. Vi har brug for enhedsdriver, der skal installeres. Enhedsdrivere kan findes i dette link i henhold til dit operativsystem.
STM32CubeMX
STM32CubeMX-værktøjet er en del af STMicroelectronics STMCube. Dette softwareværktøj gør udviklingen let ved at reducere udviklingsindsats, tid og omkostninger. STM32Cube inkluderer STM32CubeMX, som er et grafisk softwarekonfigurationsværktøj, der tillader generering af C-initialiseringskode ved hjælp af grafiske guider. Denne kode kan bruges i forskellige udviklingsmiljøer som keil uVision, GCC, IAR osv. Du kan downloade dette værktøj fra følgende link.
STM32CubeMX har følgende funktioner
- Fastgør konfliktløser
- En ur-træ indstilling hjælper
- En regnemaskine til strømforbrug
- Et værktøj, der udfører MCU perifer konfiguration som GPIO-ben, USART osv
- Et hjælpeprogram, der udfører perifere MCU-konfigurationer til middleware-stakke som USB, TCP / IP osv
Nødvendige materialer
Hardware
- STM32F103C8 Blue Pill Board
- ST-LINK V2
- Trykknap
- LED
- Brødbræt
- Jumper Wires
Software
- STM32CubeMX kodegenereringsværktøj (link)
- Keil uVision 5 (link)
- Drivere til ST-Link V2 (link)
Kredsløbsdiagram og forbindelser
Nedenfor er kredsløbsdiagrammet til simpelthen at forbinde en LED med STM32-kort ved hjælp af en trykknap.
Forbindelse mellem ST-LINK V2 og STM32F103C8
Her får STM32 Blue Pill-kortet strøm fra ST-LINK, der er forbundet til computerens USB-port. Så vi behøver ikke at forsyne STM32 separat. Nedenstående tabel viser forbindelsen mellem ST-Link og Blue pilletavle.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED & trykknap
LED'en bruges til at indikere output fra Blue Pill board, når der trykkes på en trykknap. LED's anode er forbundet til stiften PC13 på Blue Pill-kortet, og katoden er jordforbundet.
En trykknap er tilsluttet for at give input til stiften PA1 på Blue Pill Board. Vi skal også bruge en pull-up-modstand med værdi 10k, fordi stiften kan flyde uden nogen input, når knappen slippes. Den ene ende af trykknappen er forbundet til jorden, og den anden ende til pin PA1 & en pull-up-modstand på 10k er også forbundet til 3,3 V Blue Pill-kort.
Oprettelse og brænding af et program i STM32 ved hjælp af Keil uVision og ST-Link
Trin 1: - Først installere alle de styreprogrammer til ST-LINK V2, softwareværktøjer STM32Cube MX & Keil uVision og installere de nødvendige pakker for STM32F103C8.
Trin 2: - Andet trin er Åbn >> STM32Cube MX
Trin 3: - Klik derefter på Nyt projekt
Trin 4: - Efter den søgning & vælg vores mikrocontroller STM32F103C8
Trin 5: - Nu vises pin-out-skitsen af STM32F103C8, her kan vi indstille pin-konfigurationerne. Vi kan også vælge vores ben i afsnittet om perifert udstyr i henhold til vores projekt.
Trin 6: - Du kan også klikke på stiften direkte, så vises en liste, vælg nu den ønskede stiftskonfiguration.
Trin 7: - For vores projekt har vi valgt PA1 som GPIO INPUT, PC13 som GPIO OUTPUT & SYS debug som SERIAL WIRE, kun her forbinder vi ST-LINK SWCLK & SWDIO-benene. De valgte og konfigurerede stifter vises i GRØN farve. Du kan bemærke det i nedenstående billede.
Trin 8: - Næste under Konfiguration fanen, vælg GPIO at indstille GPIO pin-konfigurationer til stifterne, vi har valgt.
Trin 9: - Næste i dette pin-konfigurationsfelt kan vi konfigurere brugeretiket til ben, vi bruger, det vil sige brugerdefinerede pin-navne.
Trin 10: - Klik derefter på Projekt >> Generer kode .
Trin 11: - Nu vises dialogboksen projektindstillinger. I dette felt skal du vælge dit projektnavn og din placering og vælge udviklingsmiljøet. Vi bruger Keil, så vælg MDK-ARMv5 som IDE.
Trin 12: - Næste under Code Generator fane, skal du vælge Kopier kun de nødvendige biblioteksfiler og klik derefter på OK.
Trin 13: - Nu vises dialogboksen til generering af kode. Vælg Åbn projekt for at åbne projektet automatisk den genererede kode i Keil uvsion.
Trin 14: - Nu åbner Keil uVision-værktøjet med vores genererede kode i STM32CubeMx med det samme projektnavn med det nødvendige bibliotek og koder, der er konfigureret til de ben, vi valgte.
Trin 15: - Nu skal vi bare medtage logikken for at udføre nogle handlinger på output-LED'en (pin PC13), når der trykkes på knappen og frigøres ved GPIO-indgangen (pin PA1). Så vælg vores main.c-program for at inkludere nogle koder.
Trin 16: - Tilføj nu koden i while (1) -sløjfen, se nedenstående billede, hvor jeg fremhævede dette afsnit for at køre koden kontinuerligt.
mens (1) {hvis (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS-knap trykkes {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // For at gøre output højt, når knappen trykker på} andet {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // For at gøre output lavt, når knappen trykkes ned}}
Trin 17: - Når du er færdig med at redigere koden, skal du klikke på ikonet Indstillinger for mål under fanen debug og vælge ST-LINK Debugger
Klik også på knappen Indstillinger, og marker derefter afkrydsningsfeltet Nulstil og kør under fanen Flash-download , og klik på 'ok'.
Trin 18: - Klik nu på ikonet Genopbyg for at genopbygge alle målfiler.
Trin 19: - Nu kan du tilslutte ST-LINK til computeren med kredsløbsforbindelserne klar og klikke på DOWNLOAD-ikonet eller trykke på F8 for at blinke STM32F103C8 med den kode, du har genereret og redigeret.
Trin 20: - Du kan bemærke den blinkende indikation nederst i vinduet med køl uVision.
Output fra Keil Programmed STM32 Board
Når vi nu trykker på trykknappen, tændes LED, og når vi slipper den, slukkes LED'en.
Program
Hoveddelen, som vi har tilføjet i det genererede program, vises nedenfor. Denne nedenstående kode skal inkluderes i mens (1 ) af main.c- programmet genereret af STM32CubeMX. Du kan gå tilbage til trin 15 til trin 17 for at lære, hvordan det skal tilføjes i main.c- programmet.
mens (1) {hvis (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS-knap trykkes {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // For at gøre output højt, når knappen trykker på} andet {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // For at gøre output lavt, når knappen trykkes ned}}
Komplet proces til oprettelse og upload af projekt til STM32-kort er også forklaret i den video, der er givet i slutningen. Den komplette kode for main.c-filen er også angivet nedenfor inklusive ovenstående kode.
Yderligere kan du finde vores komplette sæt STM32-projekter her.