- ST-LINK V2
- STM32CubeMX
- Material som krävs
- Kretsschema och anslutningar
- Skapa och bränna in ett program i STM32 med Keil uVision och ST-Link
- Utgång från Keil Programmed STM32 Board
- Program
STM32 Microcontrollers som använder ARM Cortex M- arkitektur blir nu populär och används i många applikationer på grund av dess funktion, kostnad och prestanda. Vi har programmerat STM32F103C8 med hjälp av Arduino IDE i våra tidigare självstudier. Programmering av STM32 med Arduino IDE är enkelt, eftersom det finns många bibliotek tillgängliga för olika sensorer för att utföra alla uppgifter, vi behöver bara lägga till dessa bibliotek i programmet. Detta är ett enkelt förfarande och du kanske inte kommer att lära dig mer om ARM-processorerna. Så nu går vi in på nästa nivå av programmering som heter ARM-programmering. Genom detta kan vi inte bara förbättra vår kodstruktur utan också spara minnesutrymme genom att inte använda onödiga bibliotek.
STMicroelectronics introducerade ett verktyg som heter STM32Cube MX, som genererar baskod enligt kringutrustning och valt STM32-kort. Så vi behöver inte oroa oss för kodning för grundläggande drivrutiner och kringutrustning. Vidare kan den genererade koden användas i Keil uVision för redigering enligt krav. Och slutligen bränns koden in i STM32 med hjälp av ST-Link-programmerare från STMicroelectronics.
I den här handledningen lär vi oss hur man programmerar STM32F103C8 med Keil uVision & STM32CubeMX genom att göra ett enkelt projekt för gränssnitt mellan en tryckknapp och LED med STM32F103C8 Blue Pill-kortet. Vi kommer att generera koden med STM32Cube MX och sedan redigera och ladda upp koden till STM32F103C8 med Keil uVision. Innan vi kommer i detalj kommer vi först att lära oss om ST-LINK-programmeraren och STM32CubeMX-programvaruverktyget.
ST-LINK V2
Den ST-LINK / V2 är en in-circuit debugger och programmerare för mikrostyrenheten familjerna STM8 och STM32. Vi kan ladda upp kod till STM32F103C8 och andra STM8 & STM32 mikrokontroller med denna ST-LINK. Gränssnitten för enkel trådgränssnitt (SWIM) och JTAG / seriell trådfelsökning (SWD) används för att kommunicera med alla STM8- eller STM32-mikrokontroller som finns på ett applikationskort. Eftersom STM32-applikationer använder USB-gränssnittet för full hastighet för att kommunicera med Atollic-, IAR-, Keil- eller TASKING-integrerade utvecklingsmiljöer, så kan vi använda den här hårdvaran för att programmera STM 8 & STM32-mikrokontroller.
Ovan är bilden av ST-LINK V2-dongeln från STMicroelectronics som stöder hela sortimentet av STM32 SWD-felsökningsgränssnitt, ett enkelt 4-trådsgränssnitt (inklusive ström), snabbt och stabilt. Den finns i en mängd olika färger. Kroppen är gjord av aluminiumlegering. Den har en blå LED-indikering eftersom den används för att observera ST-LINK: s driftstillstånd. Stiftnamnen är tydligt markerade på skalet som vi kan se i bilden ovan. Det kan anslutas till Keil-programvaran där programmet kan blinkas till STM32-mikrokontroller. Så låt oss se i denna handledning hur denna ST-LINK-programmerare kan användas för att programmera STM32-mikrokontroller. Bilden nedan visar stiften på ST-LINK V2-modulen.
Obs! När du ansluter ST-Link till datorn för första gången. Vi behöver enhetsdrivrutinen för att installeras. Enhetsdrivrutiner finns i den här länken enligt ditt operativsystem.
STM32CubeMX
STM32CubeMX-verktyget är en del av STMicroelectronics STMCube. Detta programverktyg gör utvecklingen enkel genom att minska utvecklingsansträngning, tid och kostnad. STM32Cube inkluderar STM32CubeMX som är ett grafiskt programvarukonfigurationsverktyg som gör det möjligt att generera C-initialiseringskod med hjälp av grafiska guider. Den koden kan användas i olika utvecklingsmiljöer som keil uVision, GCC, IAR etc. Du kan ladda ner det här verktyget från följande länk.
STM32CubeMX har följande funktioner
- Pin out-konfliktlösare
- En hjälpare för inställning av klockan
- En energiförbrukningsräknare
- Ett verktyg som utför MCU perifer konfiguration som GPIO-stift, USART etc.
- Ett verktyg som utför MCU-kringkonfiguration för mellanvarustackar som USB, TCP / IP osv
Material som krävs
Hårdvara
- STM32F103C8 Blue Pill Board
- ST-LINK V2
- Tryckknapp
- LED
- Bakbord
- Bygeltrådar
programvara
- STM32CubeMX kodgenereringsverktyg (länk)
- Keil uVision 5 (länk)
- Drivrutiner för ST-Link V2 (länk)
Kretsschema och anslutningar
Nedan visas kopplingsschemat för att helt enkelt ansluta en LED med STM32-kortet med en tryckknapp.
Anslutning mellan ST-LINK V2 och STM32F103C8
Här drivs STM32 Blue Pill-kortet från ST-LINK som är ansluten till datorns USB-port. Så vi behöver inte driva STM32 separat. Tabellen nedan visar kopplingen mellan ST-Link och Blue pillboard.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3V |
LED och tryckknapp
LED-lampan används för att indikera utmatningen från Blue Pill-kortet när du trycker på en tryckknapp. LED: s anod är ansluten till stiftet PC13 på Blue Pill-kortet och katoden är jordad.
En tryckknapp är ansluten för att ge ingång till stiftet PA1 på Blue Pill-kortet. Vi måste också använda ett uppdragningsmotstånd på värdet 10k eftersom stiftet kan flyta utan någon ingång när knappen släpps. Den ena änden av tryckknappen är ansluten till jord och den andra änden till stift PA1 och ett uppdragningsmotstånd på 10k är också anslutet till 3,3 V Blue Pill-kort.
Skapa och bränna in ett program i STM32 med Keil uVision och ST-Link
Steg 1: - Först installera alla drivrutiner för ST-LINK V2, programverktyg STM32Cube MX & Keil uVision och installera nödvändiga paket för STM32F103C8.
Steg 2: - Andra steget är Öppna >> STM32Cube MX
Steg 3: - Klicka sedan på Nytt projekt
Steg 4: - Efter den sökningen och välj vår mikrokontroller STM32F103C8
Steg 5: - Nu visas uttagsskissen för STM32F103C8, här kan vi ställa in stiftkonfigurationer. Vi kan också välja våra stift i kringutrustningssektionen enligt vårt projekt.
Steg 6: - Du kan också klicka på stiftet direkt och en lista visas, välj nu önskad stiftkonfiguration.
Steg 7: - För vårt projekt har vi valt PA1 som GPIO INPUT, PC13 som GPIO OUTPUT & SYS felsökning som SERIAL WIRE, bara här ansluter vi ST-LINK SWCLK & SWDIO-stiften. De valda och konfigurerade stiften visas i GRÖN färg. Du kan notera att i bilden nedan.
Steg 8: - Välj sedan under fliken Konfiguration GPIO för att ställa in GPIO-stiftkonfigurationer för de stift vi har valt.
Steg 9: - Nästa i denna stiftkonfigurationsruta kan vi konfigurera användarmärkning för stift vi använder, det vill säga användardefinierade stiftnamn.
Steg 10: - Klicka därefter på Projekt >> Skapa kod .
Steg 11: - Nu visas dialogrutan för projektinställningar. Välj ditt projektnamn och plats i den här rutan och välj utvecklingsmiljön. Vi använder Keil så välj MDK-ARMv5 som IDE.
Steg 12: - Nästa enligt kodgenerator fliken, väljer Copy endast de nödvändiga biblioteksfiler och klicka på OK.
Steg 13: - Nu visas kodgenereringsdialogrutan. Välj Öppna projekt för att automatiskt öppna projektet den genererade koden i Keil uvsion.
Steg 14: - Nu öppnar Keil uVision-verktyget med vår genererade kod i STM32CubeMx med samma projektnamn med nödvändigt bibliotek och koder som är konfigurerade för stiften vi valde.
Steg 15: - Nu behöver vi bara inkludera logiken för att utföra vissa åtgärder vid utgångslampan (stift PC13) när knappen trycks ned och släpps vid GPIO-ingången (stift PA1). Så välj vårt main.c-program för att inkludera några koder.
Steg 16: - Lägg nu till koden i while (1) -slingan, se bilden nedan där jag markerade det avsnittet för att köra koden kontinuerligt.
medan (1) {om (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS-knappen trycks ned {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // För att göra output högt när knappen trycker på} annat {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // För att göra output låg när knappen trycks ned}}
Steg 17: - När du har avslutat redigeringen av koden klickar du på ikonen Alternativ för mål under fliken felsökning och väljer ST-LINK Felsökare
Klicka också på knappen Inställningar och markera sedan kryssrutan Återställ och kör under Flash-nedladdningen och klicka på "ok".
Steg 18: - Klicka nu på ikonen Ombyggnad för att bygga om alla målfiler.
Steg 19: - Nu kan du ansluta ST-LINK till datorn med kretsanslutningarna redo och klicka på NERLADD-ikonen eller tryck på F8 för att blinka STM32F103C8 med koden du har genererat och redigerat.
Steg 20: - Du kan se den blinkande indikationen längst ner i fönstret för uVision.
Utgång från Keil Programmed STM32 Board
Nu när vi trycker på tryckknappen tänds lysdioden och när vi släpper den släcks lysdioden.
Program
Huvuddelen som vi har lagt till i det genererade programmet visas nedan. Denna kod nedan måste inkluderas i medan (1 ) av main.c- programmet genereras av STM32CubeMX. Du kan gå tillbaka till steg 15 till steg 17 för att lära dig hur det ska läggas till i main.c- programmet.
medan (1) {om (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS-knappen trycks ned {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // För att göra output högt när knappen trycker på} annat {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // För att göra output låg när knappen trycks ned}}
Komplett process för att skapa och ladda upp projekt till STM32-kortet förklaras också i videon som ges i slutet. Den fullständiga koden för main.c-filen ges också nedan inklusive den ovan angivna koden.
Dessutom hittar du vår kompletta uppsättning STM32-projekt här.