- Selectarea și descărcarea platformelor de dezvoltare necesare pentru plăcile Nucleo64
- Schema circuitului și configurarea hardware-ului
- Noțiuni introductive despre STM32CubeMX pentru plăcile de dezvoltare STM32 Nucleo64
- Programarea plăcii de dezvoltare STM32 Nucleo64 folosind TrueSTUDIO
- Programul STM32 Nucleo64 pentru control LED cu ajutorul butonului
- Depanarea și încărcarea codului pe placa de dezvoltare STM32 Necleo64 folosind TrueSTUDIO
Mulți dintre noi ar trebui să fie familiarizați cu microcontrolerele și plăcile de dezvoltare populare precum Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051 etc. De fapt, pentru majoritatea oamenilor, Arduino ar fi fost prima lor placă de dezvoltare, dar pe măsură ce săpăm adânc și începem Proiecte profesionale, vom realiza în curând limitările Arduino (cum ar fi costul, versatilitatea, stabilitatea, viteza etc.) și vom înțelege nevoia de a trece la o platformă de microcontroler mai nativă precum PIC, STM, Renesas etc.
Am acoperit deja o secvență de tutoriale PIC Microcontroller, care ghidează începătorii pentru învățarea microcontrolerelor PIC. În mod similar, începând cu acest articol, vom planifica, de asemenea, o secvență de tutoriale STM32 Nucleo64 Development Board, care pot ajuta începătorii absolut să învețe și să dezvolte folosind platforma STM32. Plăcile de dezvoltare Nucleo64 sunt platforme ieftine și ușor de utilizat atât pentru dezvoltatori profesioniști, cât și pentru amatori. Dacă sunteți complet nou la plăcile de dezvoltare STM32 Nucleo64, consultați acest videoclip Nucleo64 Review pentru a înțelege elementele de bază ale acestei plăci înainte de a continua mai departe. Videoclipul arată, de asemenea, cum să programați STM32 utilizând platforma ARM Mbed dar pentru acest tutorial, vom folosi o altă platformă gratuită de la ST Microelectronics numită TrueSTUDIO.
Notă: Există multe versiuni ale plăcilor de dezvoltare STM32 Nucleo64, placa specială utilizată în acest tutorial este NUCLEO-F030R8. Am selectat această placă în principal din cauza costului redus. Chiar și dacă aveți o versiune diferită, cele mai multe lucruri discutate în tutorial vor fi suficiente pentru a începe.
Selectarea și descărcarea platformelor de dezvoltare necesare pentru plăcile Nucleo64
Pentru a începe cu orice microcontroler va fi nevoie de un IDE de programare, cum ar fi Arduino IDE pentru plăci Arduino, Atmel Studio pentru microcontroler AVR, MP Lab pentru PIC etc. Deci, aici avem nevoie și de un IDE pentru plăcile noastre STM32 Nucleo64 pentru a efectua programarea și depanarea. Familia STM32 este formată din microcontrolere pe 32 de biți care acceptă următoarele IDE și lanțuri de instrumente:
- IAR Embedded Workbench® pentru ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- Sistem de lucru pentru STM32
Aici, pentru tutorialele noastre, TrueSTUDIO va fi utilizat pentru scrierea, compilarea și depanarea codului, deoarece este gratuit pentru descărcare și utilizare chiar și pentru proiecte comerciale fără nicio cerință de licență. Apoi STM32CubeMX va fi utilizat pentru a genera drivere periferice pentru plăcile STM32 pentru a face programarea mai ușoară. Pentru a încărca programul nostru (fișier hexagonal) în placa noastră de dezvoltare, oamenii folosesc în mod normal instrumentul STM32 ST-LINK Utility, dar în schimb vom folosi însuși TrueSTUDIO pentru a face acest lucru. TrueSTUDIO are un mod de depanare care permite programatorilor să încarce fișierul hex direct pe placa STM32. Atât TrueSTUIO, cât și STM32CubeMX sunt ușor de descărcat, doar urmați linkul de mai jos, înscrieți-vă și descărcați configurarea. Apoi instalați-le pe laptop.
- Descărcați STM32Cube MX
- Descărcați TrueSTUDIO
Schema circuitului și configurarea hardware-ului
Înainte de a continua cu secțiunea software și codare, să ne pregătim placa pentru acest proiect. Așa cum am menționat anterior în acest articol, vom controla un LED folosind un buton. Acum, dacă ați văzut videoclipul legat mai sus, ar trebui să știți deja că placa dvs. de dezvoltare STM32 are două seturi de pini conector pe fiecare parte, numiți pini ST Morpho. Am conectat un buton și un LED la acești pini, așa cum se arată în schema de circuit de mai jos.
Conexiunile de circuit sunt ușoare pentru acest proiect, trebuie să conectăm un LED la PA5 din PORTA și un comutator la PC13 din PORTC în ceea ce privește GND. Odată ce conexiunile au fost făcute, configurarea testului meu arăta astfel.
Alternativ, putem folosi și LED-ul încorporat și butonul de pe tablă. Aceste LED-uri încorporate și butonul sunt conectate, de asemenea, la același pin, așa cum se arată în schema circuitului. Am adăugat componente externe numai pentru practică. Diagrama cu pini de mai jos a plăcii de dezvoltare STM32 va fi utilă pentru a ști unde sunt conectați fiecare pin morfo la bord.
Noțiuni introductive despre STM32CubeMX pentru plăcile de dezvoltare STM32 Nucleo64
Pasul 1: După instalare, lansați STM32CubeMX, apoi selectați selectorul plăcii de acces pentru a selecta placa STM32.
Pasul 2: Acum căutați placa după numele plăcii dvs. STM32, cum ar fi NUCLEO-F030R8 și faceți clic pe placa afișată în imagine. Dacă aveți un alt tablou, căutați numele respectiv. Software-ul va suporta toate plăcile de dezvoltare STM32 de la ST Microelectronics.
Pasul 3: Acum faceți clic pe da așa cum se arată în imaginea de mai jos, pentru a inițializa toate perifericele în modul implicit. Ulterior le putem schimba pe cele necesare, după cum este necesar în proiectul nostru.
După ce faceți clic pe „Da”, ecranul va fi similar cu imaginea de mai jos și cu culoarea verde indicând faptul că sunt inițiate în mod implicit.
Pasul 4: Acum utilizatorii pot selecta setarea dorită din categorii. Aici, în acest tutorial, vom comuta un LED folosind un buton. Deci, trebuie să facem pinul LED ca ieșire și să comutăm pinul ca INPUT.
Puteți selecta orice pin, dar selectez PA5 și îi schimb starea în GPIO_Output pentru a-l face să funcționeze ca pin de ieșire, așa cum se arată în imaginea de mai jos.
În mod similar, selectez PC13 ca GPIO_Input, astfel încât să pot citi starea butonului meu.
Alternativ, putem face și configurarea pinilor din fila Pinout și configurare, precum și cele prezentate mai jos.
Pasul 5: În pasul următor, utilizatorul poate seta frecvența dorită pentru microcontroler și pini în funcție de oscilatorul extern și intern. În mod implicit, este selectat un oscilator de cristal intern de 8 MHz și, utilizând PLL, acest 8 este convertit la 48 MHz. Adică în mod implicit placa STM32 sau microcontrolerul și pinii vor funcționa pe 48 MHz.
Pasul 6: Acum mutați în managerul de proiect și dați un nume proiectului, locația proiectului și selectați lanțul de instrumente sau IDE. Aici folosim TrueSTUDIO, așa că am selectat același lucru ca mai jos.
Pasul 7: Acum faceți clic pe Generați codul marcat de cercul roșu din imaginea de mai jos.
Pasul 8: Acum veți vedea un pop-up așa cum este dat, apoi faceți clic pe proiect deschis. Dar, asigurați-vă că ați instalat TrueSTUDIO înainte de acest pas.
Programarea plăcii de dezvoltare STM32 Nucleo64 folosind TrueSTUDIO
Acum, codul sau proiectul dvs. se vor deschide automat în TrueSTUDIO dacă TrueSTUDIO solicită locația spațiului de lucru, apoi furnizați o locație a spațiului de lucru sau mergeți cu locația implicită.
Utilizatorul va vedea ecranul de mai jos și apoi va trebui să facă clic pe semnul de colț cu culoare roșie.
Și acum putem vedea codul în IDE-ul nostru TreuSTUDIO. În partea stângă sub folderul „src” putem vedea alte fișiere de programe (cu extensia.c) care au fost deja generate pentru noi din STM32Cube. Trebuie doar să programăm fișierul main.c. Chiar și în fișierul main.c vom avea deja câteva lucruri configurate pentru noi de către CubeMX, trebuie doar să-l edităm pentru a se potrivi cu programul nostru. Codul complet din fișierul main.c este dat în partea de jos a acestei pagini.
Programul STM32 Nucleo64 pentru control LED cu ajutorul butonului
Deoarece toate driverele și codurile necesare sunt generate de STM32CubeMX, trebuie doar să configurăm un pin LED ca ieșire și un buton ca intrare. Programul pentru controlul ledului folosind butonul trebuie să fie scris în fișierul main.c. Programul complet poate fi găsit în partea de jos a acestei pagini. Explicația acestuia este următoarea
Avem doar cod scris pentru comutarea LED-ului folosind butonul. Pentru a realiza acest lucru, mai întâi definim pinii pentru LED-uri și butoane. Aici am definit un LED la numărul Pin 5 al PORTA
#define LED_PORT GPIOA #define LED_PIN GPIO_PIN_5
Și definiți comutatorul la pinul nr. 13 din PORTC.
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
Apoi, în funcția principală, am inițializat toate perifericele utilizate.
/ * Inițializați toate perifericele configurate * / MX_GPIO_Init (); MX_USART2_Init ();
Și apoi citiți butonul folosind instrucțiunea if și dacă găsiți butonul apăsați (LOW), atunci LED-ul va comuta starea sa.
While (1) {/ * CODUL UTILIZATORULUI SE ÎNCHEIE CÂND * / If (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * COD DE UTILIZATOR ÎNCEPE 3 * /}
Aici funcția HAL_GPIO_ReadPin (SW_PORT, SW_PIN) are două argumente, unul este PORT și celălalt este un pin la care este conectat comutatorul și acest pin este configurat ca INPUT în timp ce se configurează perifericul în STM32CubeMX.
Depanarea și încărcarea codului pe placa de dezvoltare STM32 Necleo64 folosind TrueSTUDIO
Acum conectați placa la computer utilizând cablul programatorului. Odată ce îl conectați, driverul necesar pentru placa ar trebui să fie descărcat automat, puteți verifica acest lucru folosind managerul de dispozitive.
Apoi, apăsați pictograma de depanare marcată de cercul roșu din imaginea de mai jos pentru a compila programul și a intra în modul de depanare.
În modul de depanare, codul va fi încărcat automat. Acum trebuie să rulăm codul apăsând „Reîncepe” sau F8 (marcat în circuitul roșu din imaginea de mai jos).
Acum putem testa controlul LED-ului apăsând butonul. Conform codului, LED-ul ar trebui să-și schimbe starea de fiecare dată când apăsați butonul. Funcționarea completă poate fi găsită și în videoclipul legat în partea de jos a acestei pagini.
După testare, putem termina și programul apăsând pictograma de terminare, marcată de cercul roșu din imaginea de mai jos.