- Valg og download af de krævede udviklingsplatforme til Nucleo64-kort
- Kredsløbsdiagram og hardwareopsætning
- Kom godt i gang med STM32CubeMX til STM32 Nucleo64 Development Boards
- Programmering af STM32 Nucleo64 Development Board ved hjælp af TrueSTUDIO
- STM32 Nucleo64 Program til kontrol af LED ved hjælp af trykknap
- Fejlfinding og upload af kode til STM32 Necleo64 Development Board ved hjælp af TrueSTUDIO
Mange af os burde være fortrolige med de populære mikrokontrollere og udviklingskort som Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051 osv. Faktisk ville Arduino for de fleste mennesker have været deres første udviklingskort, men når vi graver dybt og begynder professionelle designs, vil vi snart indse begrænsningerne ved Arduino (som omkostninger, alsidighed, stabilitet, hastighed osv.) og forstå behovet for at skifte til en mere native Microcontroller-platform som PIC, STM, Renesas osv.
Vi har allerede dækket en række PIC Microcontroller-tutorials, der guider begyndere til at lære PIC-mikrocontrollere. Tilsvarende starter vi med denne artikel også en række sekvenser af STM32 Nucleo64 Development Board-tutorials, der kan hjælpe absolutte begyndere med at lære og udvikle sig ved hjælp af STM32-platformen. Nucleo64 Development Boards er billige og nemme at bruge platformen til professionelle udviklere såvel som til hobbyister. Hvis du er helt ny på STM32 Nucleo64 Development Boards, skal du tjekke denne Nucleo64 Review-video for at forstå det grundlæggende i dette kort, inden du fortsætter videre. Videoen demonstrerer også, hvordan man programmerer STM32 ved hjælp af ARM Mbed Platform men til denne vejledning bruger vi en anden gratis at bruge platform fra ST Microelectronics kaldet TrueSTUDIO.
Bemærk: Der er mange versioner af STM32 Nucleo64 Development Boards, det særlige kort, der bruges i denne vejledning, er NUCLEO-F030R8. Vi har valgt dette kort primært på grund af dets lave omkostninger. Selv hvis du har en anden version, er de fleste ting, der diskuteres i vejledningen, tilstrækkelige til at komme i gang.
Valg og download af de krævede udviklingsplatforme til Nucleo64-kort
At komme i gang med en hvilken som helst mikrokontroller har brug for en programmerings-IDE, som vi har Arduino IDE til Arduino-kort, Atmel Studio til AVR-mikrokontroller, MP Lab til PIC osv. Så her har vi også brug for en IDE til vores STM32 Nucleo64-kort til at udføre programmering og fejlretning. STM32-familien består af 32-bit mikrocontrollere, der understøtter følgende IDE'er og værktøjskæder:
- IAR Embedded Workbench® til ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- System arbejdsbænk til STM32
Her til vores tutorials vil TrueSTUDIO blive brugt til at skrive, kompilere og debugge kode, fordi det er gratis at downloade og bruge selv til kommercielle projekter uden licenskrav. Derefter bruges STM32CubeMX til at generere perifere drivere til STM32-kort for at gøre programmeringen let. For at uploade vores program (hex-fil) til vores udviklingskort bruger folk normalt STM32 ST-LINK Utility- værktøjet, men i stedet bruger vi TrueSTUDIO selv til at gøre dette. TrueSTUDIO har en fejlretningstilstand, der giver programmerere mulighed for at uploade hex-filen direkte til STM32-kortet. Både TrueSTUIO og STM32CubeMX er nemme at downloade, følg blot nedenstående link, tilmeld dig og download installationen. Installer dem derefter på din bærbare computer.
- Download STM32Cube MX
- Download TrueSTUDIO
Kredsløbsdiagram og hardwareopsætning
Før vi fortsætter med softwareafsnittet og kodning, lad os forberede vores bestyrelse til dette projekt. Som nævnt tidligere i denne artikel skal vi styre en LED ved hjælp af en trykknap. Nu, hvis du har set den ovenfor linkede video, skal du allerede vide, at dit STM32 Development Board har to sæt stikben på hver side kaldet ST Morpho pins. Vi har tilsluttet en trykknap og en LED til disse ben som vist i kredsløbsdiagrammet nedenfor.
Kredsløbstilslutninger er lette for dette projekt, vi skal tilslutte en LED på PA5 i PORTA og en switch på PC13 i PORTC med hensyn til GND. Når forbindelserne var oprettet, så min testopsætning sådan ud.
Alternativt kan vi også bruge den indbyggede LED og trykknap på tavlen. Disse indbyggede lysdioder og trykknap er også forbundet med samme pin som vist i kredsløbsdiagrammet. Vi har kun tilføjet eksterne komponenter til praksis. Nedenstående pin-diagram for STM32 Development Board vil være praktisk at vide, hvor hver morpho-pin er forbundet til ombord.
Kom godt i gang med STM32CubeMX til STM32 Nucleo64 Development Boards
Trin 1: Efter installation skal du starte STM32CubeMX og derefter vælge adgangskortvælgeren for at vælge STM32-kortet.
Trin 2: Søg nu efter dit STM32-kortnavn som NUCLEO-F030R8, og klik på tavlen, der vises på billedet. Hvis du har et andet bord, skal du søge efter dets respektive navn. Softwaren understøtter alle STM32-udviklingskort fra ST Microelectronics.
Trin 3: Klik nu på ja som vist på billedet nedenfor for at initialisere alle eksterne enheder i deres standardtilstand. Vi kan senere ændre de krævede efter behov i vores projekt.
Efter at have klikket på 'Ja', vil skærmen svare til nedenstående billede og grøn farvestift, hvilket indikerer, at de er startet som standard.
Trin 4: Nu kan brugerne vælge den ønskede indstilling fra kategorierne. Her i denne vejledning skal vi skifte en LED ved hjælp af en trykknap. Så vi er nødt til at gøre LED-stiften som output og skifte pin som INPUT.
Du kan vælge en hvilken som helst pin, men jeg vælger PA5 og ændrer dens tilstand til GPIO_Output for at få den til at fungere som en output pin som vist i nedenstående billede.
På samme måde vælger jeg PC13 som GPIO_Input, så jeg kan læse status på min trykknap.
Alternativt kan vi også konfigurere ben fra pinout- og konfigurationsfanen samt vist nedenfor.
Trin 5: I det næste trin kan brugeren indstille den ønskede frekvens for mikrocontrolleren og stifterne i henhold til ekstern og intern oscillator. Som standard vælges en intern 8 MHz krystaloscillator, og ved hjælp af PLL bliver denne 8 konverteret til 48 MHz. Betydning som standard STM32-kort eller mikrokontroller og pins fungerer på 48MHz.
Trin 6: Gå nu ind i projektlederen, og giv et navn til dit projekt, projektplacering, og vælg værktøjskæde eller IDE. Her bruger vi TrueSTUDIO, så jeg har valgt det samme som vist nedenfor.
Trin 7: Klik nu på Generer kodemarkering ved den røde cirkel i nedenstående billede.
Trin 8: Nu vil du se en popup som angivet, og klik derefter på åbent projekt. Men sørg for at du har installeret TrueSTUDIO før dette trin.
Programmering af STM32 Nucleo64 Development Board ved hjælp af TrueSTUDIO
Nu åbnes din kode eller dit projekt i TrueSTUDIO automatisk, hvis TrueSTUDIO beder om placeringen af arbejdsområdet, så angiv en arbejdspladsplacering eller gå med standardplaceringen.
Brugeren vil se nedenstående skærm og skal derefter klikke på hjørnemærket i rød farve.
Og nu kan vi se kode i vores TreuSTUDIO IDE. På venstre side under 'src' -mappen kan vi se andre programfiler (med.c-udvidelse), der allerede er genereret til os fra STM32Cube. Vi skal bare programmere main.c-filen. Selv i main.c-filen har vi allerede få ting opsat for os af CubeMX, vi behøver kun at redigere det, så det passer til vores program. Den komplette kode inde i main.c-filen findes nederst på denne side.
STM32 Nucleo64 Program til kontrol af LED ved hjælp af trykknap
Da al den nødvendige driver og kode genereres af STM32CubeMX, behøver vi kun konfigurere en LED-pin som output og en trykknap som input. Programmet til styring af led ved hjælp af trykknappen skal skrives i main.c-filen. Det komplette program findes nederst på denne side. Forklaringen på det er som følger
Vi har kun skrevet kode til at skifte LED ved hjælp af trykknappen. For at opnå dette definerer vi først ben til LED og trykknapper. Her har vi defineret en LED på PORTA nummer 5
#define LED_PORT GPIOA #define LED_PIN GPIO_PIN_5
Og definer kontakten ved pin nummer 13 i PORTC.
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
Derefter i hovedfunktionen har vi initialiseret alle anvendte perifere enheder.
/ * Initialiser alle konfigurerede eksterne enheder * / MX_GPIO_Init (); MX_USART2_Init ();
Og læs derefter trykknappen ved hjælp af if-sætningen, og hvis fundet-knappen trykkes på (LAV), så skifter LED sin tilstand.
Mens (1) {/ * BRUGERKODE SLUT MENS * / Hvis (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * BRUGERKODE BEGYNDER 3 * /}
Her har HAL_GPIO_ReadPin (SW_PORT, SW_PIN) -funktionen to argumenter, den ene er PORT og den anden er en pin, hvor kontakten er tilsluttet, og denne pin er konfigureret som INPUT under konfiguration af periferiudstyr i STM32CubeMX.
Fejlfinding og upload af kode til STM32 Necleo64 Development Board ved hjælp af TrueSTUDIO
Tilslut nu dit kort til computeren ved hjælp af programmørkablet. Når du tilslutter det, skal den nødvendige driver til tavlen automatisk downloades, du kan kontrollere dette ved hjælp af enhedsadministratoren.
Tryk derefter på fejlretningsikonet markeret med den røde cirkel i nedenstående billede for at kompilere programmet og gå ind i fejlretningstilstand.
I fejlretningstilstand uploades koden automatisk. Nu skal vi køre koden ved at trykke på 'Genoptag' eller F8 (markeret i det røde kredsløb i nedenstående billede).
Nu kan vi teste styringen af LED ved at trykke på trykknappen. I henhold til koden skal LED'en ændre sin tilstand hver gang du trykker på trykknappen. Det komplette arbejde kan også findes i den linkede video nederst på denne side.
Efter test kan vi også afslutte programmet ved at trykke på ikonet Afslut markeret med den røde cirkel i nedenstående billede.