- ST-LINK V2
- STM32CubeMX
- Materiali richiesti
- Schema elettrico e collegamenti
- Creazione e masterizzazione di un programma in STM32 utilizzando Keil uVision e ST-Link
- Uscita della scheda STM32 programmata Keil
- Programma
I microcontrollori STM32 che utilizzano l' architettura ARM Cortex M stanno diventando popolari e vengono utilizzati in molte applicazioni a causa delle sue caratteristiche, costi e prestazioni. Abbiamo programmato STM32F103C8 utilizzando l'IDE di Arduino nei nostri tutorial precedenti. La programmazione di STM32 con Arduino IDE è semplice, poiché ci sono molte librerie disponibili per vari sensori per eseguire qualsiasi attività, dobbiamo solo aggiungere quelle librerie nel programma. Questa è una procedura semplice e potresti non accedere all'apprendimento approfondito sui processori ARM. Quindi ora stiamo entrando nel livello successivo di programmazione chiamato programmazione ARM. In questo modo non solo possiamo migliorare la nostra struttura del codice, ma possiamo anche risparmiare spazio di memoria non usando librerie non necessarie.
STMicroelectronics ha introdotto uno strumento chiamato STM32Cube MX, che genera il codice di base in base alle periferiche e alla scheda STM32 selezionata. Quindi non dobbiamo preoccuparci della codifica per driver e periferiche di base. Inoltre, questo codice generato può essere utilizzato in Keil uVision per la modifica in base alle esigenze. E infine il codice viene masterizzato in STM32 utilizzando il programmatore ST-Link di STMicroelectronics.
In questo tutorial impareremo come programmare STM32F103C8 utilizzando Keil uVision e STM32CubeMX facendo un semplice progetto di interfacciamento di un pulsante e LED con la STM32F103C8 Blue Pill board. Genereremo il codice utilizzando STM32Cube MX, quindi modificheremo e caricheremo il codice su STM32F103C8 utilizzando Keil uVision. Prima di entrare nei dettagli, impareremo prima il programmatore ST-LINK e lo strumento software STM32CubeMX.
ST-LINK V2
La ST-LINK / V2 è un debugger in-circuit e programmatore per le famiglie di microcontrollori STM8 e STM32. Possiamo caricare il codice su STM32F103C8 e altri microcontrollori STM8 e STM32 utilizzando questo ST-LINK. Le interfacce SWIM (Single Wire Interface Module) e JTAG / serial wire debugging (SWD) vengono utilizzate per comunicare con qualsiasi microcontrollore STM8 o STM32 situato su una scheda dell'applicazione. Poiché le applicazioni STM32 utilizzano l'interfaccia USB a piena velocità per comunicare con gli ambienti di sviluppo integrati Atollic, IAR, Keil o TASKING, possiamo utilizzare questo hardware per programmare i microcontrollori STM 8 e STM32.
Sopra è l'immagine del dongle ST-LINK V2 di STMicroelectronics che supporta l'intera gamma dell'interfaccia di debug SWD STM32, una semplice interfaccia a 4 fili (inclusa l'alimentazione), veloce e stabile. È disponibile in una varietà di colori. Il corpo è realizzato in lega di alluminio. Ha un'indicazione LED blu poiché viene utilizzato per osservare lo stato di funzionamento dell'ST-LINK. I nomi dei pin sono chiaramente contrassegnati sulla shell come possiamo vedere nell'immagine sopra. Può essere interfacciato con il software Keil dove è possibile eseguire il flashing del programma sui microcontrollori STM32. Quindi vediamo in questo tutorial come questo programmatore ST-LINK può essere utilizzato per programmare il microcontrollore STM32. L'immagine sotto mostra i pin del modulo ST-LINK V2.
Nota: quando si collega ST-Link al computer per la prima volta, è necessario installare il driver del dispositivo. I driver di dispositivo possono essere trovati in questo collegamento in base al sistema operativo.
STM32CubeMX
Lo strumento STM32CubeMX fa parte di STMicroelectronics STMCube. Questo strumento software semplifica lo sviluppo riducendo lo sforzo, i tempi e i costi di sviluppo. STM32Cube include STM32CubeMX che è uno strumento di configurazione software grafico che consente la generazione di codice di inizializzazione C utilizzando procedure guidate grafiche. Quel codice può essere utilizzato in vari ambienti di sviluppo come keil uVision, GCC, IAR ecc. È possibile scaricare questo strumento dal seguente collegamento.
STM32CubeMX ha le seguenti caratteristiche
- Risolutore di conflitti
- Un aiuto per l'impostazione dell'albero dell'orologio
- Un calcolatore del consumo energetico
- Un'utilità che esegue la configurazione delle periferiche MCU come pin GPIO, USART ecc
- Un'utility che esegue la configurazione delle periferiche MCU per stack middleware come USB, TCP / IP ecc
Materiali richiesti
Hardware
- STM32F103C8 Portapillole blu
- ST-LINK V2
- Premi il bottone
- GUIDATO
- Breadboard
- Cavi per ponticelli
Software
- Strumento di generazione del codice STM32CubeMX (collegamento)
- Keil uVision 5 (collegamento)
- Driver per ST-Link V2 (collegamento)
Schema elettrico e collegamenti
Di seguito è riportato lo schema elettrico per collegare semplicemente un LED con la scheda STM32 utilizzando un pulsante.
Collegamento tra ST-LINK V2 e STM32F103C8
Qui la scheda STM32 Blue Pill è alimentata dall'ST-LINK che è collegato alla porta USB del computer. Quindi non è necessario alimentare separatamente l'STM32. La tabella seguente mostra la connessione tra ST-Link e la pillola blu.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3,3V |
LED e pulsante
Il LED viene utilizzato per indicare l'uscita dalla scheda Blue Pill quando viene premuto un pulsante. L'anodo del LED è collegato al pin PC13 della scheda Blue Pill e il catodo è collegato a terra.
Un pulsante è collegato per fornire input al pin PA1 della scheda Blue Pill. Dobbiamo anche utilizzare una resistenza di pull up di valore 10k perché il pin potrebbe galleggiare senza alcun input quando il pulsante viene rilasciato. Un'estremità del pulsante è collegata a massa e l'altra estremità al pin PA1 e anche un resistore di pull up di 10k è collegato a 3,3 V della scheda Blue Pill.
Creazione e masterizzazione di un programma in STM32 utilizzando Keil uVision e ST-Link
Passaggio 1: - Prima installa tutti i driver di dispositivo per ST-LINK V2, gli strumenti software STM32Cube MX e Keil uVision e installa i pacchetti necessari per STM32F103C8.
Passaggio 2: - Il secondo passaggio è Apri >> STM32Cube MX
Passaggio 3: - Quindi fare clic su Nuovo progetto
Passaggio 4: - Dopo quella ricerca e seleziona il nostro microcontrollore STM32F103C8
Passaggio 5: - Ora appare lo schizzo del pin-out di STM32F103C8, qui possiamo impostare le configurazioni dei pin. Possiamo anche selezionare i nostri pin nella sezione periferiche in base al nostro progetto.
Passaggio 6: - È anche possibile fare clic direttamente sul pin e viene visualizzato un elenco, ora selezionare la configurazione del pin richiesto.
Passaggio 7: - Per il nostro progetto abbiamo selezionato PA1 come GPIO INPUT, PC13 come GPIO OUTPUT e SYS debug come SERIAL WIRE, qui solo colleghiamo i pin ST-LINK SWCLK e SWDIO. I pin selezionati e configurati vengono visualizzati in colore VERDE. Puoi notare che nell'immagine sottostante.
Passaggio 8: - Successivamente, nella scheda Configurazione , selezionare GPIO per impostare le configurazioni dei pin GPIO per i pin che abbiamo selezionato.
Passaggio 9: - Successivamente in questa casella di configurazione dei pin possiamo configurare l' etichetta utente per i pin che stiamo utilizzando, ovvero i nomi dei pin definiti dall'utente.
Passaggio 10: - Successivamente, fai clic su Progetto >> Genera codice .
Passaggio 11: - Ora viene visualizzata la finestra di dialogo delle impostazioni del progetto. In questa casella scegli il nome e la posizione del tuo progetto e seleziona l'ambiente di sviluppo . Stiamo usando Keil quindi seleziona MDK-ARMv5 come IDE.
Passaggio 12: - Avanti nella scheda Generatore di codice , selezionare Copia solo i file di libreria necessari e quindi fare clic su OK.
Passaggio 13: - Ora viene visualizzata la finestra di dialogo per la generazione del codice. Seleziona Apri progetto per aprire automaticamente il progetto il codice generato in Keil uvsion.
Passaggio 14: - Ora lo strumento Keil uVision si apre con il nostro codice generato in STM32CubeMx con lo stesso nome del progetto con la libreria ei codici necessari configurati per i pin che abbiamo selezionato.
Passaggio 15: - Ora dobbiamo solo includere la logica per eseguire alcune azioni sul LED di uscita (pin PC13) quando il pulsante viene premuto e rilasciato sull'ingresso GPIO (pin PA1). Quindi seleziona il nostro programma main.c per includere alcuni codici.
Passaggio 16: - Ora aggiungi il codice nel ciclo while (1) , guarda l'immagine sotto in cui ho evidenziato quella sezione per eseguire il codice continuamente.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Il pulsante DETECTS viene premuto {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Per rendere l'output alto quando si preme il pulsante d} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Per rendere l'output basso quando viene premuto il pulsante}}
Passaggio 17: - Dopo aver terminato la modifica del codice, fare clic sull'icona Opzioni per destinazione nella scheda di debug selezionare Debugger ST-LINK
Inoltre, fai clic sul pulsante Impostazioni , quindi nella scheda Download Flash seleziona la casella di controllo Ripristina ed esegui e fai clic su "ok".
Passaggio 18: - Ora fai clic sull'icona Ricostruisci per ricostruire tutti i file di destinazione.
Passaggio 19: - Ora puoi collegare ST-LINK al computer con i collegamenti del circuito pronti e fare clic sull'icona DOWNLOAD o premere F8 per eseguire il flashing dell'STM32F103C8 con il codice che hai generato e modificato.
Passaggio 20: - È possibile notare l'indicazione lampeggiante nella parte inferiore della finestra di keil uVision.
Uscita della scheda STM32 programmata Keil
Ora quando premiamo il pulsante, il LED si accende e quando lo rilasciamo, il LED si spegne.
Programma
La parte principale che abbiamo aggiunto nel programma generato è mostrata di seguito. Questo codice seguente deve essere incluso in while (1 ) del programma main.c generato da STM32CubeMX. Puoi tornare dal passaggio 15 al passaggio 17 per sapere come aggiungerlo nel programma main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Il pulsante DETECTS viene premuto {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Per rendere l'output alto quando si preme il pulsante d} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Per rendere l'output basso quando viene premuto il pulsante}}
Il processo completo di creazione e caricamento del progetto nella scheda STM32 è spiegato anche nel video fornito alla fine. Di seguito viene fornito anche il codice completo del file main.c, incluso il codice sopra indicato.
Inoltre, puoi trovare il nostro set completo di progetti STM32 qui.