- ST-LINK V2
- STM32CubeMX
- Nødvendig materiale
- Kretsdiagram og tilkoblinger
- Opprette og brenne et program i STM32 ved hjelp av Keil uVision og ST-Link
- Utgang fra Keil Programmed STM32 Board
- Program
STM32 Microcontrollers som bruker ARM Cortex M- arkitektur, blir nå populær og brukes i mange applikasjoner på grunn av funksjonen, prisen og ytelsen. Vi har programmert STM32F103C8 ved hjelp av Arduino IDE i våre tidligere opplæringsprogrammer. Programmering av STM32 med Arduino IDE er enkelt, siden det er mange biblioteker tilgjengelig for forskjellige sensorer for å utføre en hvilken som helst oppgave, vi trenger bare å legge til disse bibliotekene i programmet. Dette er en enkel prosedyre, og du kan ikke komme i dyp læring om ARM-prosessorer. Så nå kommer vi inn på neste nivå av programmering kalt ARM programmering. Ved dette kan vi ikke bare forbedre strukturen vår, men vi kan også spare minne ved å ikke bruke unødvendige biblioteker.
STMicroelectronics introduserte et verktøy kalt STM32Cube MX, som genererer grunnleggende kode i henhold til periferiutstyr og valgt STM32-kort. Så vi trenger ikke å bekymre oss for koding for grunnleggende drivere og eksterne enheter. Videre kan denne genererte koden brukes i Keil uVision for redigering i henhold til krav. Og til slutt blir koden brent inn i STM32 ved hjelp av ST-Link programmerer fra STMicroelectronics.
I denne opplæringen lærer vi hvordan du programmerer STM32F103C8 ved hjelp av Keil uVision & STM32CubeMX ved å gjøre et enkelt prosjekt for å grensesnitt en trykknapp og LED med STM32F103C8 Blue Pill-kortet. Vi genererer koden ved hjelp av STM32Cube MX, og redigerer og laster opp koden til STM32F103C8 ved hjelp av Keil uVision. Før vi kommer i detalj, vil vi først lære om ST-LINK programmerer og STM32CubeMX programvareverktøy.
ST-LINK V2
Den ST-LINK / V2 er en in-krets feilsøkingsprogram og programmerer for STM8 og STM32 mikrokontroller familier. Vi kan laste opp kode til STM32F103C8 og andre STM8 & STM32 mikrokontrollere ved hjelp av denne ST-LINKEN. Single wire interface module (SWIM) og JTAG / serial wire debugging (SWD) interface brukes til å kommunisere med hvilken som helst STM8 eller STM32 mikrokontroller som er plassert på et applikasjonskort. Ettersom STM32-applikasjoner bruker USB-fullhastighetsgrensesnittet til å kommunisere med Atollic, IAR, Keil eller TASKING integrerte utviklingsmiljøer, slik at vi kan bruke denne maskinvaren til å programmere STM 8 & STM32 mikrokontrollere.
Ovenfor er bildet av ST-LINK V2-dongelen fra STMicroelectronics som støtter hele spekteret av STM32 SWD-feilsøkingsgrensesnitt, et enkelt 4-leders grensesnitt (inkludert strøm), raskt og stabilt. Den er tilgjengelig i en rekke farger. Kroppen er laget av aluminiumslegering. Den har en blå LED-indikasjon da den brukes til å observere ST-LINKs arbeidstilstand. Pin-navnene er tydelig merket på skallet som vi kan se i bildet ovenfor. Den kan grensesnittes med Keil-programvaren der programmet kan blinkes til STM32 mikrokontrollere. Så la oss se i denne veiledningen hvordan denne ST-LINK programmereren kan brukes til å programmere STM32 mikrokontroller. Bildet nedenfor viser pinnene til ST-LINK V2-modulen.
Merk: Når du kobler ST-Link til datamaskinen for første gang. Vi trenger enhetsdriveren for å være installert. Enhetsdrivere finner du i denne lenken i henhold til operativsystemet ditt.
STM32CubeMX
STM32CubeMX-verktøyet er en del av STMicroelectronics STMCube. Dette programvareverktøyet gjør utviklingen enkel ved å redusere utviklingsinnsats, tid og kostnader. STM32Cube inkluderer STM32CubeMX, som er et grafisk programvarekonfigurasjonsverktøy som tillater generering av C-initialiseringskode ved hjelp av grafiske veivisere. Denne koden kan brukes i forskjellige utviklingsmiljøer som keil uVision, GCC, IAR etc. Du kan laste ned dette verktøyet fra følgende lenke.
STM32CubeMX har følgende funksjoner
- Pin ut konfliktløser
- En klokke-treet hjelper
- En kalkulator for strømforbruk
- Et verktøy som utfører MCU perifer konfigurasjon som GPIO-pinner, USART osv
- Et verktøy som utfører MCU perifer konfigurasjon for mellomvarestabler som USB, TCP / IP osv
Nødvendig materiale
Maskinvare
- STM32F103C8 Blue Pill Board
- ST-LINK V2
- Trykknapp
- LED
- Brettbrett
- Jumper Wires
Programvare
- STM32CubeMX kodegenereringsverktøy (lenke)
- Keil uVision 5 (lenke)
- Drivere for ST-Link V2 (lenke)
Kretsdiagram og tilkoblinger
Nedenfor er kretsskjemaet for å bare koble en LED til STM32-kortet ved hjelp av en trykknapp.
Forbindelse mellom ST-LINK V2 og STM32F103C8
Her får STM32 Blue Pill-kortet strøm fra ST-LINK som er koblet til datamaskinens USB-port. Så vi trenger ikke å drive STM32 separat. Tabellen nedenfor viser sammenhengen mellom ST-Link og Blue pillboard.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3V |
LED og trykknapp
LED-lampen brukes til å indikere utdata fra Blue Pill-kortet når du trykker på en trykknapp. LED-anoden er koblet til pinnen PC13 på Blue Pill-kortet, og katoden er jordet.
En trykknapp er koblet til for å gi inngang til pinnen PA1 på Blue Pill Board. Vi må også bruke en opptrekksmotstand med verdi 10k fordi pinnen kan flyte uten inngang når knappen slippes. Den ene enden av trykknappen er koblet til bakken og den andre enden til pinnen PA1 og en opptrekkmotstand på 10k er også koblet til 3,3 V Blue Pill-kortet.
Opprette og brenne et program i STM32 ved hjelp av Keil uVision og ST-Link
Trinn 1: - Først installere alle driverne for ST-LINK V2, programvareverktøy STM32Cube MX & Keil uVision og installere nødvendige pakker for STM32F103C8.
Trinn 2: - Andre trinn er Åpen >> STM32Cube MX
Trinn 3: - Klikk deretter på Nytt prosjekt
Trinn 4: - Etter det søk og velg vår mikrokontroller STM32F103C8
Trinn 5: - Nå vises pin-out-skissen til STM32F103C8, her kan vi stille pin-konfigurasjonene. Vi kan også velge nålene våre i periferiutstyrsseksjonen i henhold til prosjektet vårt.
Trinn 6: - Du kan også klikke på pinnen direkte, så vises en liste, velg nå ønsket pinnekonfigurasjon.
Trinn 7: - For prosjektet vårt har vi valgt PA1 som GPIO INPUT, PC13 som GPIO OUTPUT & SYS feilsøking som SERIAL WIRE, bare her kobler vi ST-LINK SWCLK & SWDIO-pinnene. De valgte og konfigurerte pinnene vises i GRØNN farge. Du kan merke deg det i bildet nedenfor.
Trinn 8: - Neste henhold Konfigurasjon fliken, velger GPIO for å sette GPIO stiftform for pinnene vi har valgt.
Trinn 9: - Neste i denne pin-konfigurasjonsboksen kan vi konfigurere User Label for pins vi bruker, det vil si brukerdefinerte pin-navn.
Trinn 10: - Klikk deretter på Prosjekt >> Generer kode .
Trinn 11: - Nå vises dialogboksen for prosjektinnstillinger. I dette feltet velger du prosjektnavnet og plasseringen og velger utviklingsmiljøet. Vi bruker Keil, så velg MDK-ARMv5 som IDE.
Trinn 12: - Neste henhold Code Generator fanen, velg Kopier bare de nødvendige bibliotekfiler , og klikk deretter OK.
Trinn 13: - Nå vises kodegenereringsdialogboksen. Velg Åpne prosjekt for å åpne prosjektet automatisk den genererte koden i Keil uvsion.
Trinn 14: - Nå åpner Keil uVision-verktøyet med vår genererte kode i STM32CubeMx med samme prosjektnavn med nødvendig bibliotek og koder som er konfigurert for pinnene vi valgte.
Trinn 15: - Nå trenger vi bare å inkludere logikken for å utføre noen handlinger på utgangs-LED (pin PC13) når knappen trykkes og slippes ved GPIO-inngangen (pin PA1). Så velg vårt main.c-program for å inkludere noen koder.
Trinn 16: - Legg nå til koden i while (1) -sløyfen, se bildet nedenfor der jeg markerte den delen for å kjøre koden kontinuerlig.
mens (1) {hvis (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS-knappen er trykket på {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // For å gjøre produksjonen høy når knappen trykkes på} annet {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // For å gjøre utdata lav når knappen trykkes ned}}
Trinn 17: - Når du er ferdig med å redigere koden, klikker du på Alternativer for mål- ikonet under feilsøkingsfanen og velger ST-LINK Feilsøking
Klikk også på Innstillinger- knappen, og merk deretter av i avmerkingsboksen Tilbakestill og kjør under Flash-nedlastingsfanen og klikk 'ok'.
Trinn 18: - Klikk nå på ikonet Rebuild for å gjenoppbygge alle målfilene.
Trinn 19: - Nå kan du koble ST-LINK til datamaskinen med kretsforbindelsene klare og klikke på NEDLADD-ikonet eller trykke F8 for å blinke STM32F103C8 med koden du har generert og redigert.
Trinn 20: - Du kan legge merke til den blinkende indikasjonen nederst i vinduet med kilevisning.
Utgang fra Keil Programmed STM32 Board
Nå når vi trykker på trykknappen, lyser LED og når vi slipper den, slås LED av.
Program
Hoveddelen som vi har lagt til i det genererte programmet, vises nedenfor. Denne koden nedenfor må inkluderes i mens (1 ) av main.c- programmet generert av STM32CubeMX. Du kan gå tilbake til trinn 15 til trinn 17 for å lære hvordan det skal legges til i main.c- programmet.
mens (1) {hvis (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS-knappen er trykket på {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // For å gjøre produksjonen høy når knappen trykkes på} annet {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // For å gjøre utdata lav når knappen trykkes ned}}
Komplett prosess med å lage og laste opp prosjekt til STM32-kortet er også forklart i videoen som er gitt til slutt. Den komplette koden til main.c-filen er også gitt nedenfor, inkludert den ovennevnte koden.
Videre finner du vårt komplette sett med STM32-prosjekter her.