- ST-LINK V2
- STM32CubeMX
- Materiale necesare
- Diagrama circuitului și conexiunile
- Crearea și arderea unui program în STM32 folosind Keil uVision și ST-Link
- Ieșirea plăcii STM32 programate Keil
- Program
Microcontrolerele STM32 care utilizează arhitectura ARM Cortex M devin acum populare și sunt utilizate în multe aplicații datorită caracteristicii, costului și performanței sale. Am programat STM32F103C8 folosind Arduino IDE în tutorialele noastre anterioare. Programarea STM32 cu Arduino IDE este simplă, deoarece există o mulțime de biblioteci disponibile pentru diferiți senzori pentru a efectua orice sarcină, trebuie doar să adăugăm acele biblioteci în program. Aceasta este o procedură ușoară și este posibil să nu ajungeți la o învățare profundă despre procesoarele ARM. Deci, acum intrăm în următorul nivel de programare numit programare ARM. Prin aceasta putem, nu numai că ne îmbunătățim structura codului, ci putem, de asemenea, economisi spațiu de memorie, neutilizând biblioteci inutile.
STMicroelectronics a introdus un instrument numit STM32Cube MX, care generează codul de bază în funcție de periferice și de placa STM32 selectată. Deci, nu trebuie să ne facem griji cu privire la codificarea driverelor de bază și a perifericelor. În plus, acest cod generat poate fi utilizat în Keil uVision pentru editare în funcție de cerință. Și în cele din urmă codul este ars în STM32 folosind programatorul ST-Link de la STMicroelectronics.
În acest tutorial vom învăța cum să programăm STM32F103C8 folosind Keil uVision și STM32CubeMX, făcând un proiect simplu de interfață a unui buton și a LED-ului cu placa STM32F103C8 Blue Pill. Vom genera codul folosind STM32Cube MX, apoi vom edita și încărca codul în STM32F103C8 folosind Keil uVision. Înainte de a intra în detalii, vom afla mai întâi despre programatorul ST-LINK și instrumentul software STM32CubeMX.
ST-LINK V2
ST-LINK / V2 este un debugger în circuit și programator pentru STM8 și STM32 familii microcontroler. Putem încărca codul pe STM32F103C8 și pe alte microcontrolere STM8 și STM32 folosind acest ST-LINK. Modulul de interfață cu un singur fir (SWIM) și interfețele JTAG / serial wire debugging (SWD) sunt utilizate pentru a comunica cu orice microcontroler STM8 sau STM32 situat pe o placă de aplicație. Deoarece aplicațiile STM32 folosesc interfața USB full-speed pentru a comunica cu mediile de dezvoltare integrate Atollic, IAR, Keil sau TASKING, putem folosi acest hardware pentru a programa microcontrolerele STM 8 și STM32.
Mai sus este imaginea dongle-ului ST-LINK V2 de la STMicroelectronics care acceptă întreaga gamă de interfețe de depanare STM32 SWD, o interfață simplă cu 4 fire (inclusiv alimentare), rapidă și stabilă. Este disponibil într-o varietate de culori. Corpul este fabricat din aliaj de aluminiu. Are o indicație LED albastră, deoarece este utilizată pentru a observa starea de lucru a ST-LINK. Numele pinului sunt marcate clar pe coajă, așa cum putem vedea în imaginea de mai sus. Poate fi interfațat cu software-ul Keil, unde programul poate fi conectat la microcontrolerele STM32. Deci, să vedem în acest tutorial cum poate fi folosit acest programator ST-LINK pentru a programa microcontrolerul STM32. Imaginea de mai jos prezintă pinii modulului ST-LINK V2.
Notă: Când conectați ST-Link la computer pentru prima dată. Avem nevoie de driverul de dispozitiv pentru a fi instalat. Driverele de dispozitiv pot fi găsite în acest link în funcție de sistemul de operare.
STM32CubeMX
Instrumentul STM32CubeMX face parte din STMicroelectronics STMCube. Acest instrument software facilitează dezvoltarea prin reducerea efortului de dezvoltare, a timpului și a costurilor. STM32Cube include STM32CubeMX care este un instrument grafic de configurare a software-ului care permite generarea codului de inițializare C folosind vrăjitori grafici. Acest cod poate fi utilizat în diferite medii de dezvoltare, cum ar fi keil uVision, GCC, IAR etc. Puteți descărca acest instrument de pe următorul link.
STM32CubeMX are următoarele caracteristici
- Fixează rezolvatorul de conflicte
- Un ajutor pentru setarea arborelui ceasului
- Un calculator de consum de energie
- Un utilitar care efectuează configurație periferică MCU, cum ar fi pinii GPIO, USART etc.
- Un utilitar care efectuează configurație periferică MCU pentru stive de middleware precum USB, TCP / IP etc.
Materiale necesare
Hardware
- STM32F103C8 Placă pentru pilule albastre
- ST-LINK V2
- Apasa butonul
- LED
- Breadboard
- Sârme jumper
Software
- Instrumentul de generare a codului STM32CubeMX (Link)
- Keil uVision 5 (link)
- Drivere pentru ST-Link V2 (link)
Diagrama circuitului și conexiunile
Mai jos este schema de circuit pentru a conecta pur și simplu un LED cu placa STM32 folosind un buton.
Conexiune între ST-LINK V2 și STM32F103C8
Aici placa STM32 Blue Pill este alimentată de la ST-LINK care este conectat la portul USB al computerului. Deci, nu trebuie să alimentăm STM32 separat. Tabelul de mai jos prezintă legătura dintre ST-Link și tablă de pastile Blue.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3V |
LED și buton de apăsare
LED-ul este folosit pentru a indica ieșirea de pe placa Blue Pill atunci când este apăsat un buton. Anodul LED-ului este conectat la pinul PC13 al plăcii Blue Pill și catodul este împământat.
Este conectat un buton pentru a furniza intrarea pinului PA1 al plăcii Blue Pill. De asemenea, trebuie să folosim un rezistor de tracțiune de 10k, deoarece pinul ar putea pluti fără nicio intrare atunci când butonul este eliberat. Un capăt al butonului este conectat la masă, iar celălalt capăt la pinul PA1 și un rezistor de tragere de 10k este, de asemenea, conectat la 3,3V de pe placa Blue Pill.
Crearea și arderea unui program în STM32 folosind Keil uVision și ST-Link
Pasul 1: - Mai întâi instalați toate driverele de dispozitiv pentru ST-LINK V2, instrumentele software STM32Cube MX & Keil uVision și instalați pachetele necesare pentru STM32F103C8.
Pasul 2: - Al doilea pas este Deschis >> STM32Cube MX
Pasul 3: - Apoi faceți clic pe Proiect nou
Pasul 4: - După acea căutare și selectați microcontrolerul nostru STM32F103C8
Pasul 5: - Acum apare schița pin-out a STM32F103C8, aici putem seta configurațiile pinului. De asemenea, putem selecta pinii noștri în secțiunea periferice în funcție de proiectul nostru.
Pasul 6: - De asemenea, puteți face clic pe pin și apare o listă, selectați acum configurația pin necesară.
Pasul 7: - Pentru proiectul nostru am selectat PA1 ca GPIO INPUT, PC13 ca GPIO OUTPUT & SYS debug ca SERIAL WIRE, doar aici conectăm pinii ST-LINK SWCLK și SWDIO. Pinii selectați și configurați apar în culoare VERDE. Puteți observa acest lucru în imaginea de mai jos.
Pasul 8: - Apoi, sub fila Configurare , selectați GPIO pentru a seta configurațiile pinului GPIO pentru pinii pe care i-am selectat.
Pasul 9: - Apoi, în această casetă de configurare a pinilor, putem configura eticheta utilizatorului pentru pinii pe care îi folosim, adică numele de pin definite de utilizator.
Pasul 10: - După aceea, faceți clic pe Proiect >> Generați cod .
Pasul 11: - Acum apare caseta de dialog cu setările proiectului. În această casetă alegeți numele și locația proiectului dvs. și selectați mediul de dezvoltare. Folosim Keil, deci selectați MDK-ARMv5 ca IDE.
Pasul 12: - Apoi în fila Generator de cod , selectați Copiați doar fișierele bibliotecii necesare și apoi faceți clic pe OK.
Pasul 13: - Acum apare caseta de dialog generare cod. Selectați Open Project pentru a deschide proiectul automat codul generat în Keil uvsion.
Pasul 14: - Acum instrumentul Keil uVision se deschide cu codul nostru generat în STM32CubeMx cu același nume de proiect cu biblioteca necesară și coduri care sunt configurate pentru pinii pe care i-am selectat.
Pasul 15: - Acum trebuie doar să includem logica pentru a efectua o acțiune la LED-ul de ieșire (pinul PC13) când butonul este apăsat și eliberat la intrarea GPIO (pinul PA1). Așadar, selectați programul nostru main.c pentru a include câteva coduri.
Pasul 16: - Acum adăugați codul în bucla while (1) , vedeți imaginea de mai jos unde am evidențiat acea secțiune pentru a rula codul continuu.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Butonul DETECTS este apăsat {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Pentru a crește rezultatul la apăsarea butonului} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Pentru a face ieșirea scăzută la apăsarea butonului}}
Pasul 17: - După ce ați terminat de editat codul, faceți clic pe pictograma Opțiuni pentru țintă de sub fila de depanare selectați ST-LINK Debugger
De asemenea, faceți clic pe butonul Setări și apoi sub fila Descărcare Flash bifați caseta de selectare Resetare și Executare și faceți clic pe „ok”.
Pasul 18: - Acum faceți clic pe pictograma Reconstruiți pentru a reconstrui toate fișierele țintă.
Pasul 19: - Acum puteți conecta ST-LINK la computer cu conexiunile de circuit gata și faceți clic pe pictograma DOWNLOAD sau apăsați F8 pentru a clipi STM32F103C8 cu codul pe care l-ați generat și editat.
Pasul 20: - Puteți observa indicația intermitentă în partea de jos a ferestrei keil uVision.
Ieșirea plăcii STM32 programate Keil
Acum, când apăsăm butonul, LED-ul se aprinde și când îl eliberăm, LED-ul se stinge.
Program
Partea principală pe care am adăugat-o în programul generat este prezentată mai jos. Acest cod de mai jos trebuie să fie inclus în while (1 ) al programului main.c generat de STM32CubeMX. Puteți reveni la Pasul 15 până la Pasul 17 pentru a afla cum ar trebui adăugat în programul main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Butonul DETECTS este apăsat {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Pentru a crește rezultatul la apăsarea butonului} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Pentru a face ieșirea scăzută la apăsarea butonului}}
Procesul complet de creare și încărcare a proiectului pe placa STM32 este, de asemenea, explicat în videoclipul prezentat la sfârșit. De asemenea, codul complet al fișierului main.c este dat mai jos, inclusiv codul dat mai sus.
Mai mult, puteți găsi setul nostru complet de proiecte STM32 aici.