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.

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
Ecco il link di download ufficiale:
https://www.stmicroelectronics.com.cn/en/development-tools/stm32cubeide.html
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.
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.
- Crea un nuovo progetto STM32 da zero
- Esiste già un file di configurazione STM32CubeMX (*.ioc file) e si desidera creare un nuovo progetto STM32 basato su questo file ioc.
- Ho già un progetto SW4STM32 o TrueSTUDIO e voglio convertirlo in un progetto STM32CubeIDE.
- Crea un nuovo progetto basato sulle routine nella libreria STM32Cube
Struttura del progetto STM32CubeIDE
STM32CubeIDE ha due strutture di progetto, come mostrato nella figura seguente.
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.
Nella scheda Aggiornamento firmware STM32 nella finestra Preferenze di Windows, è possibile impostare il percorso di installazione della libreria firmware e come aggiornarla.
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.
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
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”.
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.
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.
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.
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.
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.
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.
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.
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 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.
| Feature | STM32CubeMX | STM32Cube IDE |
|---|---|---|
| Purpose | Configuration tool for STM32 MCUs | Full IDE for application development |
| Functionality | Initializes MCUs, configures peripherals, generates code | Code writing, debugging, building, and compiling |
| Platform | Standalone, integrates with Keil, IAR | Built on Eclipse, integrates CubeMX, debugging tools |
| Code Generation | Generates initialization code for external IDEs | Develops and compiles applications directly |
| User Interface | Graphical interface for configuration | Full IDE with editing and debugging tools |
| Use Case | Set up peripherals and generate base code | Write, 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.

Supporta l'integrazione con STM32CubeMX?
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.
Perché STM32CubeIDE non genera codice?
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.




