Tutoriale introduttivo su STM32CubeIDE

Indice

STM32CubeIDE software

Per migliorare la facilità d’uso della famiglia di microcontrollori STM32, ricca di funzionalità ed efficiente dal punto di vista energetico, nel 2019 ST ha aggiunto uno strumento di sviluppo STM32 gratuito e multifunzionale all’ecosistema software STM32Cube: STM32CubeIDE.

Per funzionare bene come gli strumenti di sviluppo integrato (IDE) commerciali, STM32CubeIDE sfrutta appieno la tecnologia di Atollic™️, un fornitore di strumenti di sviluppo embedded acquisito da STMicroelectronics nel 2017. Utilizzando termini di licenza open standard del settore, questo software IDE aggiunge funzionalità specifiche per STM32 per semplificare e accelerare i progetti embedded basati su STM32, inclusi potenti strumenti di configurazione del microcontrollore STM32CubeMX e gestione dei progetti.

Integrando STM32CubeMX con STM32CubeIDE, ST ha creato un ambiente di sviluppo più potente. L’ecosistema STM32Cube completo include anche il masterizzatore di codice STM32CubeProgrammer e la famiglia di monitor di esecuzione del codice STM32CubeMonitor, nonché numerosi pacchetti firmware MCU autonomi.

Cos'è STM32CubeIDE?

STM32CubeIDE è uno strumento di sviluppo software gratuito ufficiale di ST, basato sul framework Eclipse™️/CDT, sulla catena di strumenti di compilazione GCC e sullo strumento di debug GDB, e supporta l’aggiunta di plug-in funzionali di terze parti. Allo stesso tempo, STM32CubeIDE integra alcune delle funzionalità di STM32CubeMX e STM32CubeProgrammer.

Con STM32CubeIDE, gli sviluppatori possono fare tutto, dalla selezione del chip, alla configurazione del progetto, alla generazione del codice, alla modifica del codice, alla compilazione, al debug e alla programmazione.

STM32Cube software ecosystem
STM32Cube software ecosystem

Funzionalità di STM32CubeIDE

1. Integrare STM32CubeMX:

  • Selezione del microcontrollore STM32
  • Assegnazione dei pin, configurazione di clock, IP e middleware
  • Creazione del progetto e generazione del codice di inizializzazione

2. Basato su Eclipse/CDT, supporta i plug-in Eclipse, utilizza la toolchain ARM e il debugger GDB in GNU C/C++.

3. Altre funzioni di debug avanzate:

  • Visualizzazioni di core CPU, registri IP e memoria
  • Visualizzazione di variabili live
  • Analisi del sistema e tracciamento live (SWV)
  • Strumento di analisi dei guasti della CPU

4. Supporta la sonda di debug ST-LINK e J-Link

5. Supporta l’importazione di progetti da TrueSTUDIO e AC6 (SW4STM32)

6. Supporta il sistema operativo: Windows, Linux e MacOS

Download di STM32CubeIDE

Spazio di lavoro STM32CubeIDE

STM32CubeIDE è un framework basato su Eclipse che eredita alcune delle funzionalità di Eclipse che non sono familiari agli utenti, come le viste di prospettiva, gli spazi di lavoro, ecc.

Spazio di lavoro: STM32CubeIDE gestisce i progetti tramite lo spazio di lavoro. Quando si apre STM32Cube, crea un nuovo spazio di lavoro predefinito. Il nuovo progetto o quello importato apparterrà a questo spazio di lavoro. I progetti nello stesso spazio di lavoro hanno la stessa configurazione a livello di IDE (impostata in Window→Preferences), come le impostazioni dello stile di visualizzazione e di modifica. Dal punto di vista del file system, uno spazio di lavoro è una cartella che contiene più cartelle di progetto e una cartella denominata “.metadata”, che contiene informazioni su tutti i progetti in quello spazio di lavoro. La cartella “.metadata” contiene le informazioni di tutti i progetti nello spazio di lavoro. L’utente può passare da uno spazio di lavoro all’altro tramite il menu File→Switch Workspace.

Prospettiva: Una prospettiva è una serie di finestre correlate a un certo tipo di funzione. Comunemente usate sono la prospettiva di modifica C/C++, la prospettiva di debug e la prospettiva di configurazione CubeMX.

STM32CubeIDE Perspective
STM32CubeIDE Perspective

La prospettiva di modifica C/C++ include il Project Manager, la finestra di modifica, la finestra di struttura e così via. Il Project Manager consente di visualizzare e manipolare tutti i progetti nello spazio di lavoro corrente. Fare doppio clic per aprire un file nel progetto e il contenuto del file verrà visualizzato nella finestra di modifica, dove è possibile modificarlo. La finestra di struttura più a destra elenca tutte le funzioni, le variabili e le macro definite nel file attualmente aperto.

Il menu Mostra vista della finestra consente di aprire e chiudere le finestre che devono essere visualizzate nella prospettiva di modifica C/C++.

È possibile passare da una prospettiva all’altra utilizzando le icone in alto a destra, ad esempio facendo clic sull’icona del crawler, è possibile passare alla vista della prospettiva di debug. Fare clic sul pulsante di debug nella barra degli strumenti sotto la vista della prospettiva di modifica C/C++ passerà automaticamente alla vista della prospettiva di debug dopo l’avvio del debug.

Come usare STM32CubeIDE?

1. Gestione del progetto

Crea un nuovo progetto

Utilizzando STM32CubeIDE, gli utenti possono avviare un nuovo progetto in vari modi. La schermata di benvenuto di STM32CubeIDE elenca i punti di ingresso rapidi per la creazione/importazione di un progetto, corrispondenti ai quattro scenari seguenti. Le funzioni corrispondenti possono anche essere implementate tramite Nuovo e Importa nel menu File.

  1. Crea un nuovo progetto STM32 da zero
  2. Esiste già un file di configurazione STM32CubeMX (*.ioc file) e si desidera creare un nuovo progetto STM32 basato su questo file ioc.
  3. Ho già un progetto SW4STM32 o TrueSTUDIO e voglio convertirlo in un progetto STM32CubeIDE.
  4. Crea un nuovo progetto basato sulle routine nella libreria STM32Cube
STM32CubeIDE New Project
STM32CubeIDE New Project

Struttura del progetto STM32CubeIDE

STM32CubeIDE ha due strutture di progetto, come mostrato nella figura seguente.

STM32CubeIDE project structure diagram
STM32CubeIDE project structure diagram

I MCU a core singolo sono strutture piatte.

Per i MCU con architettura dual-core o MCU di sicurezza, come le serie STM32H7, STM32L5 e STM32MP1, il progetto STM32CubeIDE è una struttura gerarchica. Prendendo come esempio STM32H7, dopo aver creato o importato un progetto STM32H7, vedrai una struttura di progetto a tre livelli nella barra Project Explorer: il livello superiore è il progetto “root”, quindi ci sono due progetti “child” corrispondenti ai core CM7 e CM4 rispettivamente. Il livello superiore è il progetto “root”, quindi ci sono due progetti “sub” corrispondenti ai kernel CM7 e CM4, e i file di progetto sono sotto i progetti “sub”. Questi due progetti “sub” CM7 e CM4 sono i progetti realmente compilabili e debuggabili, mentre il progetto “root” è solo un “container” che contiene i progetti “sub” CM7 e CM4. AN5361, AN5394, AN5360 e AN5564 descrivono come creare, importare, compilare e debuggare progetti dual-core STM32H7, STM32L5, STM32MP1 e STM32WL rispettivamente in STM32CubeIDE.

Gestione della libreria firmware

STM32CubeIDE integra alcune delle funzionalità di STM32CubeMX, consentendoti di generare un nuovo progetto selezionando direttamente il modello di chip/scheda di sviluppo o selezionando una routine. Il codice driver e routine necessario per generare un progetto con STM32CubeIDE proviene dalle librerie firmware di ciascuna famiglia STM32.

In Help\u2192Gestisci pacchetti software embedded, tutte le librerie firmware STM32 e altri plug-in possono essere gestiti (installa/rimuovi librerie firmware).

Il pulsante Installa ora consente a STM32CubeIDE di scaricare e installare automaticamente dalla rete e il pulsante Da locale consente di installare librerie firmware pre-scaricate.

Il pulsante Rimuovi ora consente di rimuovere la libreria firmware selezionata.

STM32CubeIDE firmware library
STM32CubeIDE firmware library

Nella scheda Aggiornamento firmware STM32 nella finestra Preferenze di Windows, è possibile impostare il percorso di installazione della libreria firmware e come aggiornarla.

STM32CubeIDE Firmware Preferences Setting
STM32CubeIDE Firmware Preferences Setting

Configurazione di rete

Per impostazione predefinita, STM3CubeIDE tenterà di connettersi alla rete quando apre e crea un nuovo progetto. Puoi anche scegliere “Modalità offline” per impedire a STM32CubeIDE di connettersi alla rete. Tuttavia, è necessario installare le librerie firmware pre-scaricate tramite il pulsante Da locale nella finestra Gestione pacchetti software embedded nell’immagine precedente, altrimenti il codice non verrà generato automaticamente per il nuovo progetto STM32.

Fare clic sul pulsante Controlla connessione per verificare lo stato attuale della connessione di rete. Se alla fine del controllo appare una x rossa, significa che c’è un problema con la configurazione di rete e dobbiamo andare alla pagina Connessione di rete per impostarla.

Oltre al precedente rilevamento dello stato attivo della rete, se il download del firmware fallisce, controlla anche se la configurazione di rete di STM32CubeIDE è corretta.

I passaggi di configurazione sono mostrati nella figura seguente:
1. Vai al menu Preferenze di Windows e seleziona la scheda Connessioni di rete generali
2. Seleziona il metodo Manuale
3. Seleziona HTTP e fai doppio clic per aprire la finestra di modifica per impostare i parametri di connessione di rete.

STM32CubeIDE Network Configuration
STM32CubeIDE Network Configuration

Apri/Chiudi/Elimina/Passa/Esporta progetti STM32CubeIDE

Nella finestra Project Explorer, è possibile visualizzare tutti i progetti sotto lo spazio di lavoro corrente. Gli utenti possono aprire/chiudere/eliminare/importare/esportare/rinominare qualsiasi progetto in questa finestra.

2. Compilazione del codice

Impostazione delle proprietà e compilazione

Seleziona un progetto nell’Esplora progetti, fai clic destro su di esso e accedi al menu delle proprietà, dove puoi configurare gli elementi di compilazione.

Una volta completata la configurazione, il progetto è pronto per essere compilato. Puoi avviare la compilazione in tre modi:
– Metodo 1: seleziona il progetto, fai clic destro su di esso e seleziona “Build Project”.
– Metodo 2: seleziona il progetto, accedi da menu Progetto e quindi seleziona “Build Project”.
– Metodo 3: seleziona il progetto e fai clic sull’icona Build nella barra degli strumenti

STM32CubeIDE project property configuration
STM32CubeIDE project property configuration

Migliora la velocità di compilazione

Abilitando la build parallela, puoi migliorare la velocità di compilazione di STM32Cube IDE.
Seleziona il progetto, fai clic destro su di esso e accedi al menu delle proprietà, seleziona “C/C++ Build” e nella scheda Comportamento, seleziona la funzione “Enable parallel build”.

STM32CubeIDE CC++ Build parallel compile
STM32CubeIDE CC++ Build parallel compile

Strumenti ausiliari per la compilazione

Dopo che il progetto è stato compilato, la finestra “Build Analyzer” mostra l’utilizzo di tutte le regioni di memoria e le sezioni definite nel file di collegamento, inclusi l’indirizzo di caricamento, l’indirizzo di esecuzione, quanti byte sono occupati, quanti byte sono rimasti, ecc. ecc.

La finestra “Static Stack Analyzer” mostra l’utilizzo dello stack statico.

STM32CubeIDE fornisce anche una funzione Headless Build, che ti consente di compilare dalla riga di comando senza aprire la GUI di CubeIDE.

3. Debug e programmazione del codice

Configurazione di debug ed esecuzione

Dopo che il progetto STM32CubeIDE è stato compilato senza errori, è pronto per il debug e il download.

Nella barra degli strumenti della prospettiva C/C++ ci sono tre pulsanti relativi al download e al debug: Debug, Esegui e Strumenti esterni.

Il piccolo triangolo accanto al pulsante “Debug” apre il menu Configurazione debug per configurare i parametri di debug, come la selezione del debugger, le impostazioni della connessione GDB, le impostazioni ST-LINK, le impostazioni del caricatore Flash esterno, ecc., e per avviare il debug.

Con il pulsante “Esegui”, puoi scaricare il programma solo senza avviare il debug.

Il pulsante “Strumenti esterni” ti consente di invocare strumenti da riga di comando esterni.

STM32CubeIDE Code Debugging
STM32CubeIDE Code Debugging

Avvia il debug

STM32CubeIDE utilizza GDB per il debug, supporta i debugger STLink e SEGGER J-Link e supporta la connessione all’MCU di destinazione tramite interfaccia SWD o JTAG.

Dopo che il progetto STM32CubeIDE è stato compilato, il debug può essere avviato direttamente facendo clic sull’icona del crawler nella barra degli strumenti o selezionando il menu Esegui–>Debug.

STM32CubeIDE Start Debugging
STM32CubeIDE Start Debugging

Se è la prima volta che esegui il debug del progetto corrente, STM32CubeIDE compilerà prima il progetto e quindi aprirà la finestra di configurazione del debug. La finestra di configurazione del debug contiene opzioni per la selezione dell’interfaccia di debug, le impostazioni STLink, le impostazioni di ripristino e le impostazioni del caricatore flash esterno, ecc. Gli utenti possono controllare o modificare le configurazioni. Dopo aver confermato che tutte le configurazioni sono corrette, puoi fare clic su OK per avviare il debug.

Quindi STM32CubeIDE scaricherà prima il programma nell’MCU e quindi avvierà l’esecuzione dall’entry point specificato nel file di collegamento (*.ld). Il programma inizia l’esecuzione da Reset_Handler per impostazione predefinita e si interrompe sulla prima riga della funzione main, in attesa della successiva istruzione di debug.

Operazioni di debug di base

Dopo aver avviato il debug, STM32CubeIDE passerà automaticamente alla vista della prospettiva di debug e i pulsanti di operazione di debug sono elencati nella barra degli strumenti della vista della prospettiva di debug. Come mostrato nella figura seguente.

Basic debugging operation of STM32CubeIDE
Basic debugging operation of STM32CubeIDE

4. Utilizzo dei plugin

STM32CubeIDE supporta anche i plugin Eclipse. Ci sono 2 metodi per installarli:

  1. Installazione tramite “Eclipse Marketplace” nel menu Aiuto;
  2. Installazione tramite “Install New Software” nel menu “Aiuto”.
STM32CubeIDE plugins Installing
STM32CubeIDE plugins Installing

Esempio di programmazione STM32CubeIDE

Proviamo a sperimentare il processo di sviluppo software utilizzando STM32CubeIDE attraverso una routine di lampeggio di un LED.

La routine utilizza la scheda di sviluppo NUCLEO-H743ZI e crea un nuovo progetto da zero tramite STM32CubeIDE. Il progetto implementa quindi una semplice funzione: il LED1 integrato si accende e si spegne automaticamente a intervalli di 500 ms.

Cosa possiamo imparare da questo esempio di programmazione è riportato di seguito:

  • Crea un nuovo progetto STM32CubeIDE
  • Configura il chip STM32
  • Aggiungi il codice utente e compila
  • Imposta i parametri di debug
  • Debug del codice (visualizza variabili e registri)
  • Imposta i punti di interruzione

Innanzitutto, seleziona File–>Nuovo–>Progetto STM32. STM32CubeIDE aprirà la finestra di selezione della MCU. In questa finestra, puoi selezionare un determinato modello di chip oppure puoi selezionare una determinata scheda di sviluppo o routine ST. Qui digitiamo STM32H743ZI nella casella di ricerca, puoi selezionare direttamente questo chip e quindi fare clic su Avanti.

Create STM32CubeIDE New Project and Select STM MCU model
Create STM32CubeIDE New Project and Select STM MCU model

Nella finestra successiva che si apre, è necessario impostare il nome del progetto, il tipo e la posizione per salvare il progetto. Per impostazione predefinita, il nuovo progetto verrà salvato nello spazio di lavoro corrente, ma puoi anche deselezionare “Usa posizione predefinita” e personalizzare la posizione del progetto come mostrato di seguito. Tieni presente che se provi a inserire due progetti nella stessa posizione, potresti riscontrare un errore durante il processo di creazione successivo. Quindi puoi aggiungere il nome del progetto al percorso per distinguere i diversi progetti.

Una volta completata l’impostazione, fai clic su Fine e STM32CubeIDE creerà un progetto per noi e aprirà l’interfaccia di configurazione del chip, che è la stessa di STM32CubeMX.

Durante questo periodo, potresti ricevere un messaggio pop-up che aprirai la prospettiva di configurazione di CubeMX, fai clic su Sì e il gioco è fatto.

STM32CubeMX Configuration Perspective
STM32CubeMX Configuration Perspective

La prossima cosa da fare è configurare il clock, GPIO, periferiche, middleware, ecc. in base ai requisiti funzionali nella schermata di configurazione del chip. In questa routine, utilizziamo solo PB0, che viene utilizzato come output per controllare LED1, quindi dobbiamo solo configurarlo. Il clock utilizza semplicemente la configurazione predefinita.

Nella visualizzazione Pinout, il pin da configurare può essere trovato rapidamente sul diagramma del package del chip utilizzando la barra di ricerca.

Seleziona il pin, fai clic con il pulsante destro del mouse su di esso e seleziona la funzione GPIO_Output.

Quindi vai alla visualizzazione Sistema, fai clic sul modulo GPIO e quindi puoi vedere il pin PB0 appena configurato. Questa finestra ti consente anche di continuare a regolare altri parametri di PB0, come pull-up/down, velocità, ecc. È anche possibile definire un’etichetta utente LDE1 per esso, che è facile da fare riferimento nel codice.

Configure GPIOs on Create STM32CubeIDE
Configure GPIOs on Create STM32CubeIDE

Una volta completata tutta la configurazione, seleziona Progetto–>Genera codice per rigenerare il codice. A questo punto, STM32Cube passa alla visualizzazione della prospettiva C/C++ e quindi puoi aggiungere il file dell’utente o apportare modifiche a un file C.

Qui, aggiungiamo un pezzo di codice che inverte PB0. Tieni presente che tutto il codice aggiunto dall’utente deve essere inserito tra le dichiarazioni “USER CODE BEGIN xxx” e “USER CODE END xxx”. In questo modo, quando il codice viene rigenerato di nuovo, questa parte del codice non andrà persa.

Dopo aver aggiunto il codice, fai clic su “Build” per avviare la compilazione.

Generate Code and Compile Project
Generate Code and Compile Project

Se la compilazione è terminata e non sono stati segnalati errori, è possibile fare clic su Debug per avviare il debug.

La prima volta che si avvia il debug, verrà visualizzata una finestra di configurazione dei parametri di debug. Assicurarsi che tutti i parametri siano corretti, fare clic su OK e STM32CubeIDE passerà automaticamente dall’interfaccia di modifica all’interfaccia di debug, come mostrato nella figura seguente.

Nell’interfaccia di debug, è possibile eseguire il debug passo dopo passo utilizzando i pulsanti di azione nella barra degli strumenti.

Fare doppio clic sulla barra dei marcatori più a sinistra di una riga di codice per aggiungere un punto di interruzione in questa riga di codice.

Sul lato destro vengono aperte diverse finestre di debug, tra cui: variabili locali, punti di interruzione, variabili globali e registri, ecc. Queste finestre possono essere aperte o chiuse nel menu Finestra–>Mostra visualizzazione.

STM32CubeIDE Debug Code
STM32CubeIDE Debug Code

STM32CubeIDE vs STM32CubeMX

STM32Cube IDE è un ambiente di sviluppo integrato (IDE) per lo sviluppo di applicazioni su microcontrollori STM32. Basato sulla piattaforma Eclipse, STM32Cube IDE integra STM32CubeMX, debugger, editor, compilatori e altri strumenti, fornendo agli sviluppatori un ambiente completo. STM32Cube IDE offre funzionalità di debug, controllo di versione, modifica del codice e funzionalità di compilazione, consentendo agli sviluppatori di completare l’intero processo di sviluppo all’interno di un’interfaccia unificata.

STM32CubeMX è uno strumento di configurazione grafica progettato per inizializzare i microcontrollori STM32 e generare codice di inizializzazione. Fornisce un’interfaccia intuitiva che consente agli utenti di selezionare i modelli di microcontrollore, configurare le periferiche, le mappature dei pin e generare il codice di inizializzazione corrispondente. STM32CubeMX può anche generare file di configurazione FreeRTOS, configurare l’albero di clock e impostare le priorità degli interrupt. Il codice generato può essere integrato in vari ambienti di sviluppo integrati (IDE) come Keil o IAR per un ulteriore sviluppo dell’applicazione.

FeatureSTM32CubeMXSTM32Cube IDE
PurposeConfiguration tool for STM32 MCUsFull IDE for application development
FunctionalityInitializes MCUs, configures peripherals, generates codeCode writing, debugging, building, and compiling
PlatformStandalone, integrates with Keil, IARBuilt on Eclipse, integrates CubeMX, debugging tools
Code GenerationGenerates initialization code for external IDEsDevelops and compiles applications directly
User InterfaceGraphical interface for configurationFull IDE with editing and debugging tools
Use CaseSet up peripherals and generate base codeWrite, build, and debug applications

Domande frequenti su STM32CubeIDE

STM32CubeIDE può generare file BIN o HEX dopo la compilazione?

Per impostazione predefinita, STM32CubeIDE genera file ELF dopo la compilazione. Tuttavia, supporta anche la generazione di file HEX o BIN. La procedura di configurazione è la seguente: andare al menu principale Progetto > Proprietà > C/C++ Build e aprire le impostazioni in cui è possibile configurare il formato di output.

generating BIN or HEX files by STM32CubeIDE
Generating BIN or HEX files by STM32CubeIDE

Sì, assolutamente. STM32CubeIDE integra effettivamente STM32CubeMX come modulo all’interno del suo ambiente di sviluppo. Quando si crea un nuovo progetto in CubeIDE, STM32CubeMX viene automaticamente richiamato per consentire agli utenti di eseguire configurazioni di inizializzazione grafica.

Ci potrebbero essere diverse ragioni per cui STM32CubeIDE non genera codice:

  • Assicurarsi che STM32CubeMX sia integrato correttamente e richiamato durante la creazione del progetto.
  • Verificare di aver configurato correttamente il microcontrollore e le sue periferiche in STM32CubeMX prima di tentare di generare il codice.
  • Verificare le impostazioni nella sezione Progetto > Proprietà, in particolare le opzioni di generazione del codice.
  • Assicurarsi che non ci siano errori o configurazioni mancanti che potrebbero impedire la generazione del codice.

Iscriviti

Unisciti alla nostra lista di iscritti per ricevere aggiornamenti mensili sul blog, notizie tecnologiche, casi di studio. Non invieremo mai spam e potrai annullare l’iscrizione in qualsiasi momento.

Informazioni sull'autore

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Hai bisogno di aiuto?

Torna in alto

Instant Quote