- ST-LINK V2
- STM32CubeMX
- Materials necessaris
- Diagrama de circuits i connexions
- Creació i gravació d’un programa a STM32 mitjançant Keil uVision i ST-Link
- Sortida de la placa STM32 programada per Keil
- Programa
Els microcontroladors STM32 que utilitzen l’ arquitectura ARM Cortex M s’estan popularitzant i s’utilitzen en moltes aplicacions per la seva característica, cost i rendiment. Hem programat STM32F103C8 mitjançant l'IDE Arduino en els nostres tutorials anteriors. Programar STM32 amb Arduino IDE és senzill, ja que hi ha moltes biblioteques disponibles per a diversos sensors per realitzar qualsevol tasca, només hem d’afegir aquestes biblioteques al programa. Aquest és un procediment senzill i és possible que no aprengueu a fons els processadors ARM. Així que ara estem entrant en el següent nivell de programació anomenat programació ARM. D'aquesta manera, no només podem millorar la nostra estructura del codi, sinó que també podem estalviar espai de memòria en no utilitzar biblioteques innecessàries.
STMicroelectronics va introduir una eina anomenada STM32Cube MX, que genera codi bàsic segons els perifèrics i la placa STM32 seleccionada. Per tant, no ens hem de preocupar de codificar per a controladors i perifèrics bàsics. A més, aquest codi generat es pot utilitzar a Keil uVision per editar-lo segons els requisits. I finalment el codi es crema a STM32 mitjançant el programador ST-Link de STMicroelectronics.
En aquest tutorial aprendrem a programar STM32F103C8 mitjançant Keil uVision i STM32CubeMX fent un projecte senzill d' interfície d'un polsador i un botó LED amb la placa STM32F103C8 Blue Pill. Generarem el codi amb STM32Cube MX i després editarem i penjarem el codi a STM32F103C8 mitjançant Keil uVision. Abans d’aprofundir en els detalls, primer coneixerem el programador ST-LINK i l’eina de programari STM32CubeMX.
ST-LINK V2
El ST-LINK / V2 és un depurador i programador en circuit per a les famílies de microcontroladors STM8 i STM32. Podem carregar codi a STM32F103C8 i altres microcontroladors STM8 i STM32 mitjançant aquest ST-LINK. El mòdul d’interfície de cable únic (SWIM) i les interfícies JTAG / depuració de cables de sèrie (SWD) s’utilitzen per comunicar-se amb qualsevol microcontrolador STM8 o STM32 situat en una placa d’aplicació. Com que les aplicacions STM32 utilitzen la interfície USB de velocitat completa per comunicar-se amb entorns de desenvolupament integrats Atollic, IAR, Keil o TASKING, podem utilitzar aquest maquinari per programar els microcontroladors STM 8 i STM32.

A la part superior es mostra la imatge del dongle ST-LINK V2 de STMicroelectronics que admet tota la gamma d’interfícies de depuració STM32 SWD, una interfície senzilla de 4 fils (incloent alimentació), ràpida i estable. Està disponible en una gran varietat de colors. El cos està fet d'aliatge d'alumini. Té una indicació LED blava, ja que s’utilitza per observar l’estat de treball del ST-LINK. Els noms dels pins estan clarament marcats a la closca, tal com podem veure a la imatge anterior. Es pot connectar amb el programari Keil, on el programa es pot connectar als microcontroladors STM32. Vegem, doncs, en aquest tutorial com es pot utilitzar aquest programador ST-LINK per programar un microcontrolador STM32. A la imatge següent es mostren els pins del mòdul ST-LINK V2.

Nota: Quan connecteu ST-Link amb l'ordinador per primera vegada. Necessitem instal·lar un controlador de dispositiu. Els controladors de dispositiu es poden trobar en aquest enllaç segons el vostre sistema operatiu.
STM32CubeMX
L'eina STM32CubeMX forma part de STMicroelectronics STMCube. Aquesta eina de programari facilita el desenvolupament reduint l'esforç, el temps i els costos de desenvolupament. STM32Cube inclou STM32CubeMX, que és una eina de configuració de programari gràfic que permet la generació de codi d’inicialització C mitjançant assistents gràfics. Aquest codi es pot utilitzar en diversos entorns de desenvolupament com keil uVision, GCC, IAR, etc. Podeu descarregar aquesta eina des del següent enllaç.
STM32CubeMX té les funcions següents
- Fixa el solucionador de conflictes
- Un ajudant per configurar l'arbre del rellotge
- Una calculadora de consum d'energia
- Una utilitat que realitza configuracions perifèriques MCU, com ara pins GPIO, USART, etc.
- Una utilitat que realitza la configuració de perifèrics MCU per a piles de middleware com USB, TCP / IP, etc.
Materials necessaris
Maquinari
- STM32F103C8 Tauler de pastilles blaves
- ST-LINK V2
- Polsador
- LED
- Taula de pa
- Jumper Wires
Programari
- Eina de generació de codi STM32CubeMX (enllaç)
- Keil uVision 5 (enllaç)
- Controladors per a ST-Link V2 (enllaç)
Diagrama de circuits i connexions
A continuació es mostra el diagrama de circuits per connectar simplement un LED amb la placa STM32 mitjançant un polsador.

Connexió entre ST-LINK V2 i STM32F103C8
Aquí la placa STM32 Blue Pill s’alimenta des del ST-LINK que està connectat al port USB de l’ordinador. Per tant, no hem d’alimentar el STM32 per separat. La taula següent mostra la connexió entre ST-Link i el tauler de pastilles Blau.
|
STM32F103C8 |
ST-Link V2 |
|
GND |
GND |
|
SWCLK |
SWCLK |
|
SWDIO |
SWDIO |
|
3V3 |
3,3V |
LED i polsador
El LED s’utilitza per indicar la sortida de la placa Blue Pill quan es prem un botó. L'ànode del LED està connectat al pin PC13 de la placa Blue Pill i el càtode està connectat a terra.
Es connecta un polsador per proporcionar entrada al pin PA1 de la placa Blue Pill. També hem d’utilitzar una resistència pull up de valor 10k perquè el pin pot flotar sense cap entrada quan es deixa anar el botó. Un extrem del polsador està connectat a terra i un altre extrem al pin PA1 i una resistència de pujada de 10 k també està connectada a 3,3 V de la placa Blue Pill.

Creació i gravació d’un programa a STM32 mitjançant Keil uVision i ST-Link
Pas 1: primer instal·leu tots els controladors de dispositiu per a ST-LINK V2, eines de programari STM32Cube MX & Keil uVision i instal·leu els paquets necessaris per a STM32F103C8.
Pas 2: - El segon pas és Obrir >> STM32Cube MX
Pas 3: - A continuació, feu clic a Nou projecte

Pas 4: - Després d’aquesta cerca i seleccioneu el nostre microcontrolador STM32F103C8

Pas 5: - Ara apareix l' esbós de pin-out de STM32F103C8, aquí podem establir les configuracions de pins. També podem seleccionar els nostres pins a la secció de perifèrics segons el nostre projecte.

Pas 6: - També podeu fer clic al pin directament i apareixerà una llista; ara seleccioneu la configuració de pin necessària.

Pas 7: - Per al nostre projecte, hem seleccionat PA1 com GPIO INPUT, PC13 com GPIO OUTPUT i SYS depuració com a SERIAL WIRE, només aquí connectem els pins ST-LINK SWCLK i SWDIO. Els pins seleccionats i configurats apareixen en color VERD. Podeu observar-ho a la imatge següent.

Pas 8: - A continuació, a la pestanya Configuració , seleccioneu GPIO per configurar les configuracions de pins GPIO per als pins que hem seleccionat.

Pas 9: - A continuació, en aquest quadre de configuració de pins podem configurar l’etiqueta d’usuari per als pins que fem servir, és a dir, els noms de pins definits per l’usuari.

Pas 10: - Després, feu clic a Projecte >> Genera codi .

Pas 11: - Ara apareix el quadre de diàleg de configuració del projecte. En aquest quadre, trieu el nom i la ubicació del projecte i seleccioneu l’entorn de desenvolupament. Estem utilitzant Keil, així que seleccioneu MDK-ARMv5 com a IDE.

Pas 12: - A continuació, a la pestanya Generador de codi , seleccioneu Copia només els fitxers de biblioteca necessaris i feu clic a D'acord.

Pas 13: - Ara apareix el quadre de diàleg de generació de codi. Seleccioneu Obre projecte per obrir el projecte automàticament el codi generat a Keil uvsion.

Pas 14: - L' eina Keil uVision s'obre amb el nostre codi generat a STM32CubeMx amb el mateix nom del projecte amb la biblioteca i els codis necessaris que estan configurats per als pins que hem seleccionat.

Pas 15: - Ara només cal incloure la lògica per realitzar alguna acció al LED de sortida (pin PC13) quan es prem el botó i es deixa anar a l'entrada GPIO (pin PA1). Així que seleccioneu el programa main.c per incloure alguns codis.

Pas 16: - Ara afegiu el codi al bucle while (1) , vegeu la imatge següent on he ressaltat aquesta secció per executar el codi contínuament.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Es prem el botó DETECTS {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Per augmentar la sortida quan es prem el botó} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Per baixar la sortida quan es prem el botó}}

Pas 17: - Quan hàgiu acabat d'editar el codi, feu clic a la icona Opcions per a la destinació, a la pestanya de depuració, seleccioneu Depurador ST-LINK

A més, feu clic al botó Configuració i, a continuació, a la pestanya Descàrrega Flash, marqueu la casella de selecció Restableix i Executa i feu clic a "D'acord".

Pas 18: - Feu clic a la icona Reconstrueix per reconstruir tots els fitxers de destinació.

Pas 19: - Ara podeu connectar l'ST-LINK a l'ordinador amb les connexions del circuit preparades i fer clic a la icona DESCÀRREGA o prémer F8 per llampar el STM32F103C8 amb el codi que heu generat i editat.

Pas 20: - Podeu notar la indicació que parpelleja a la part inferior de la finestra de la vista de keil.

Sortida de la placa STM32 programada per Keil
Ara, quan premem el polsador, el LED s’encén i, quan el deixem anar, el LED s’apaga.

Programa
La part principal que hem afegit al programa generat es mostra a continuació. Aquest codi següent s’ha d’incloure a while (1 ) del programa main.c generat pel STM32CubeMX. Podeu tornar al pas 15 al pas 17 per obtenir informació sobre com s’hauria d’afegir al programa main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Es prem el botó DETECTS {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Per augmentar la sortida quan es prem el botó} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Per baixar la sortida quan es prem el botó}}
El procés complet de creació i càrrega del projecte al tauler STM32 també s’explica al vídeo que es dóna al final. A continuació, també es proporciona el codi complet del fitxer main.c, inclòs el codi indicat anteriorment.
A més, podeu trobar el nostre conjunt complet de projectes STM32 aquí.
