La serie STM32H7 è una potenza nel mondo dei microcontrollori. Noto per le sue prestazioni elevate, è il preferito tra gli sviluppatori.
Questi microcontrollori sono progettati da STMicroelectronics, leader nel settore dei semiconduttori. Offrono impressionanti velocità di elaborazione e funzionalità avanzate.
Le schede di sviluppo STM32H7 sono perfette per progetti che richiedono prestazioni in tempo reale e un’elevata potenza di calcolo. Soddisfano un’ampia gamma di applicazioni.
Che tu sia un ingegnere o un hobbista, le schede STM32H7 forniscono gli strumenti di cui hai bisogno. Sono versatili e adattabili a vari requisiti di progetto.
In questa guida, esploreremo la serie STM32H7 in dettaglio. Dalle funzionalità alla programmazione, imparerai tutto ciò che devi sapere per iniziare.
Cos'è la serie di microcontrollori STM32H7?
La serie STM32H7 si distingue come una scelta di primo piano per i microcontrollori ad alte prestazioni. Questi chip vantano impressionanti capacità di elaborazione, rendendoli una soluzione ideale per attività impegnative.
Alimentati dal core ARM Cortex-M7, possono raggiungere velocità fino a 480 MHz. Questo li rende ideali per applicazioni che richiedono una potenza di calcolo ed efficienza significative.
Gli attributi chiave della serie STM32H7 includono:
- Fino a 2 MB di memoria Flash e 1 MB di RA
- Opzioni di connettività avanzate come Ethernet, USB e CAN
- Supporto per FreeRTOS e altri sistemi operativi in tempo reale

Questi microcontrollori soddisfano varie applicazioni, tra cui l’automazione industriale, l’elettronica di consumo e i sistemi automobilistici. Il loro design robusto supporta l’affidabilità a lungo termine, fondamentale in molti settori.
Con robuste funzionalità di sicurezza, i microcontrollori STM32H7 garantiscono l’integrità e la sicurezza dei dati. Funzionalità come la crittografia hardware e l’avvio protetto li rendono adatti ad applicazioni sicure.
In sintesi, la serie STM32H7 offre versatilità, prestazioni e affidabilità. È un’ottima scelta per gli sviluppatori che mirano a costruire sistemi embedded efficienti e sicuri.
Schede di sviluppo STM32H7 popolari
La serie STM32H7 offre una varietà di schede di sviluppo, ciascuna adatta a diversi requisiti di progetto. Queste schede sono disponibili in vari fattori di forma e configurazioni, rendendole versatili per numerose applicazioni.
Scheda STM32H743ZI Nucleo
Un’opzione notevole è la scheda STM32H743ZI Nucleo. È popolare tra gli sviluppatori grazie al suo design intuitivo e all’ampio supporto periferico. Questa scheda è ideale per progetti di controllo motore e automazione industriale. La sua compatibilità con l’ecosistema Arduino ne aumenta la flessibilità per la prototipazione.

Kit Discovery STM32H750B-DK
Un’altra scheda popolare è il kit Discovery STM32H750B-DK. Questa scheda è progettata per applicazioni che richiedono interfacce grafiche e touch migliorate. Dispone di un display LCD, che lo rende adatto ad applicazioni di interfaccia uomo-macchina (HMI).

Kit Discovery STM32H7S78-DK
Il kit Discovery STM32H7S78-DK si distingue come una potente piattaforma per applicazioni ad alte prestazioni. Dotato di funzionalità grafiche avanzate e un display ad alta risoluzione, è perfetto per lo sviluppo di interfacce utente sofisticate ed esperienze multimediali ricche. Questo kit offre anche robuste opzioni di connettività e una serie completa di periferiche, rendendolo altamente versatile per progetti embedded impegnativi che richiedono sia potenza di elaborazione che output visivo avanzato.

STM32H7 vs ESP32: un confronto dettagliato
Quando si sceglie un microcontrollore, confrontare STM32H7 ed ESP32 è fondamentale. Entrambi hanno punti di forza unici e soddisfano esigenze diverse.
STM32H7 si distingue per la sua eccezionale potenza di elaborazione. Vanta fino a 480 MHz, rendendolo adatto a calcoli intensivi. Al contrario, ESP32 offre una potenza di elaborazione moderata ma integra Wi-Fi e Bluetooth, rendendolo una scelta popolare per l’IoT.
Gli sviluppatori spesso scelgono STM32H7 per la sua estesa periferica e il supporto dell’interfaccia. È ideale per applicazioni che richiedono più protocolli di comunicazione come I2C, SPI e UART. D’altra parte, ESP32 eccelle nella connettività wireless. Le sue robuste capacità Wi-Fi e
Bluetooth sono adatte per dispositivi intelligenti e automazione domestica.
Ecco un rapido confronto delle caratteristiche:
STM32H7
CPU: Arm Cortex-M7 (Single or Dual Core, up to 600 MHz)
RAM: Up to 1.4 MB SRAM, plus other RAM
Flash Memory: Up to 2 MB embedded Flash
Connectivity: Ethernet, USB, SPI, I2C, UART, CAN, etc.
Peripherals: ADC, DAC, Timers, PWM, RNG, LCD Controller, etc.
Power Consumption: As low as 32 µA in Stop mode, total current consumption as low as 4µA
Main Applications: High-performance industrial control, graphical interfaces, real-time processing, complex embedded systems
Ecosystem: Extensive STM32 ecosystem, including STM32CubeMX, HAL libraries, etc.
Price: Typically higher
ESP32
CPU: Xtensa LX6 Dual-Core (up to 240 MHz)
RAM: 520 KB SRAM
Flash Memory: 448 KB ROM (built-in), external Flash expandable
Connectivity: Wi-Fi (802.11 b/g/n), Bluetooth (v4.2 BR/EDR & BLE), SPI, I2S, I2C, UART, SD/SDIO, etc.
Peripherals: ADC, DAC, Touch Sensors, PWM, IR Remote, Pulse Counter, etc.
Power Consumption: Deep sleep current 5 µA
Main Applications: Internet of Things (IoT), wireless communication, smart home, low-power applications
Ecosystem: ESP-IDF, Arduino IDE, MicroPython, etc.
Price: Typically lower
Summary:
The **STM32H7** series are high-performance microcontrollers designed for applications requiring significant processing power, rich peripherals, and real-time capabilities, such as advanced industrial control, graphical user interfaces, and complex embedded systems. They generally feature more memory and higher clock frequencies.
The **ESP32** series, on the other hand, is a microcontroller with integrated Wi-Fi and Bluetooth, making it ideal for Internet of Things (IoT) applications, wireless communication, and scenarios requiring low-power connectivity. Its strengths lie in its wireless connectivity features and more accessible price point.
The choice between these microcontrollers depends on your specific project needs, including performance requirements, power budget, connectivity demands, and cost considerations.
Iniziare a programmare con STM32H7
Immergersi nella programmazione STM32H7 può essere sia entusiasmante che gratificante. Questa serie offre un’elevata potenza di elaborazione, rendendola la preferita per applicazioni complesse. Comprendere come programmare questi microcontrollori è fondamentale per sfruttare appieno il loro potenziale.
STM32CubeIDE è l’ambiente di sviluppo principale per la programmazione STM32H7. Fornisce una suite integrata di strumenti per la codifica, il debug e la distribuzione di applicazioni. Questa IDE supporta più linguaggi di programmazione, tra cui C e C++, soddisfacendo le diverse preferenze degli sviluppatori.
STM32H7 supporta diversi sistemi operativi in tempo reale (RTOS), tra cui FreeRTOS. Un RTOS consente agli sviluppatori di creare applicazioni con un controllo preciso dei tempi, fondamentale per i sistemi in tempo reale. L’incorporazione di un RTOS può migliorare significativamente le prestazioni dei tuoi progetti STM32H7.
Per iniziare, segui questi passaggi:
- Installa STM32CubeIDE: scarica e configura l’IDE.
- Configura la Toolchain: configura i compilatori e i plugin necessari.
- Impara le basi: esplora l’interfaccia e le funzionalità di STM32CubeIDE.
- Progetti di esempio: inizia con i modelli forniti per comprendere il flusso di lavoro.
- Esplora le librerie: utilizza middleware e librerie periferiche.
Esempio di programmazione - Lampeggio di un LED
In questo caso, imparerai a configurare un progetto di base per far lampeggiare un LED. Questo fondamentale “Hello World” della programmazione embedded ti introdurrà al controllo GPIO (General Purpose Input/Output), all’ambiente di sviluppo STM32CubeIDE e ai passaggi essenziali per configurare, codificare, compilare e caricare la tua scheda STM32H7.
Alla fine di questa guida, avrai fatto lampeggiare con successo un LED sulla tua scheda di sviluppo, ponendo una solida base per progetti più complessi.
Requisiti hardware
Prima di iniziare, assicurati di avere l’hardware seguente:
- Scheda di sviluppo STM32H7:
- Qualsiasi kit di scoperta STM32H7 (ad esempio, STM32H750B-DK, STM32H7S78-DK)
- Oppure una scheda STM32H7 Nucleo (ad esempio, STM32H743ZI Nucleo)
- (La maggior parte di queste schede ha almeno un LED programmabile dall’utente a bordo, in genere collegato a un pin GPIO come PC13, PB0, PB1 o PE1)
- Cavo da USB Type-A a Micro-B/Type-C: per alimentare la scheda e collegarla al computer per la programmazione/debug.
- Computer personale: in esecuzione su Windows, macOS o Linux.
Requisiti software
Dovrai avere il seguente software installato sul tuo computer:
- STM32CubeIDE: questo è l’ambiente di sviluppo integrato ufficiale di STMicroelectronics, che include il compilatore GCC, il debugger e lo strumento di configurazione grafica STM32CubeMX. È gratuito e altamente raccomandato.
Tutorial passo dopo passo
Parte 1: Impostazione del progetto STM32CubeIDE
Avvia STM32CubeIDE: Apri l’applicazione. Se è la prima volta che lo fai, potrebbe chiederti una posizione per lo spazio di lavoro. Scegli una directory adatta.

- Crea un nuovo progetto STM32:
Vai a File > Nuovo > Progetto STM32.

Dopo che il sistema ha inizializzato il selettore di destinazione STM32, puoi specificare il tuo microcontroller STM32H7 esatto nella finestra “Selezione destinazione”.

Puoi utilizzare la barra di ricerca “Numero di parte”. Ad esempio:
- Se hai un STM32H743ZI Nucleo, digita
STM32H743ZI. - Se hai un STM32H750B-DK, digita
STM32H750VB. - Se hai un STM32H7S78-DK, digita
STM32H7S78.
- Se hai un STM32H743ZI Nucleo, digita
Seleziona il tuo dispositivo specifico dall’elenco e fai clic su Avanti.

- Nome del progetto e impostazioni:
- Nome del progetto: Inserisci un nome descrittivo, ad esempio
H7_LED_Blink. - Tipo di progetto mirato: Lascia come
Vuoto. - Fai clic su
Fine. - Se richiesto di inizializzare tutte le periferiche con la loro modalità predefinita, fai clic su
Sì. Questo aprirà l’interfaccia di configurazione STM32CubeMX.
- Nome del progetto: Inserisci un nome descrittivo, ad esempio

Parte 2: Configurazione STM32CubeMX (all'interno di STM32CubeIDE)
Una volta creato il progetto, il file .ioc (file di configurazione STM32CubeMX) si aprirà. Qui configurerai graficamente il tuo microcontrollore.
Pinout & Configurazione:
Identifica il pin del LED: Consulta il manuale utente della tua scheda di sviluppo per trovare a quale pin GPIO è collegato il LED integrato. I pin comuni includono
PC13(per le schede Nucleo-144),PB0,PB1oPE1.Configura il pin GPIO:
Trova il pin identificato sullo schema del chip o nella visualizzazione “Pinout” (ad esempio,
PC13).Fai clic con il pulsante sinistro del mouse sul pin e seleziona
GPIO_Output. Il pin diventerà verde, indicando che è configurato come uscita.Facoltativo – Etichetta utente: È buona norma etichettare i tuoi pin. Puoi fare clic con il pulsante destro del mouse sul pin e selezionare
Inserisci etichetta utente. DigitaOnboard_LED(o un nome descrittivo simile).

- Configura le impostazioni GPIO:
- Nella scheda “Pinout & Configurazione”, espandi
System Core > GPIO. - Trova la riga corrispondente al pin LED configurato (ad esempio,
PC13). - Nella colonna “Livello di uscita GPIO”, impostalo su
Low. (Vogliamo che il LED inizi SPENTO). - Assicurati che “Modalità GPIO” sia
Output Push Pull. - Lascia le altre impostazioni (Pull-up/Pull-down, Velocità di uscita massima) come predefinite per questo esempio di base.
- Nella scheda “Pinout & Configurazione”, espandi
- Configura le impostazioni GPIO:

- System Core -> Configurazione SYS:
- Nella scheda “Pinout & Configurazione”, espandi
System Core > SYS. - In “Configurazione”, imposta l’opzione
DebugsuSerial Wire. Questo è fondamentale per il debug e la programmazione.
- Nella scheda “Pinout & Configurazione”, espandi
- Configurazione dell’orologio:
- Vai alla scheda
Clock Configuration. - Per un semplice lampeggio del LED, le impostazioni di clock predefinite generate da CubeIDE sono generalmente sufficienti. Non sono in genere necessarie modifiche qui a meno che non siano richieste velocità di clock molto specifiche.
- Vai alla scheda
- Project Manager & Generazione del codice:
- Vai alla scheda
Project Manager. - Verifica il
Nome progettoe ilToolchain/IDE(dovrebbe essereSTM32CubeIDE). - Genera codice: Fai clic sul pulsante
Genera codice(l’icona a forma di ingranaggio oProject > Genera codice). - Se richiesto di salvare le modifiche, fai clic su
Sì. - Questa azione genererà tutto il codice di inizializzazione necessario per il tuo progetto in base alla tua configurazione CubeMX.
- Vai alla scheda

Parte 3: Implementazione del codice
Ora che la struttura di base del progetto e le configurazioni periferiche sono impostate, scriveremo la logica di lampeggio effettiva.
Naviga a
main.c:Nel pannello Project Explorer (lato sinistro di STM32CubeIDE), naviga a:
H7_LED_Blink(nome del tuo progetto)> Core > Src > main.cFai doppio clic su
main.cper aprirlo nell’editor.
Individua il ciclo
while(1):Scorri verso il basso in
main.cfinché non trovi i commenti/* USER CODE BEGIN 3 */e/* USER CODE END 3 */all’interno del ciclowhile(1). Qui aggiungerai il tuo codice applicativo.
Aggiungi la logica di lampeggio:
All’interno del ciclo
while(1), aggiungi le seguenti due righe di codice:
/* USER CODE BEGIN 3 */
HAL_GPIO_TogglePin(Onboard_LED_GPIO_Port, Onboard_LED_Pin); // Toggle the LED state
HAL_Delay(500); // Wait for 500 milliseconds (0.5 seconds)
/* USER CODE END 3 */
Spiegazione del codice:
HAL_GPIO_TogglePin(): Questa è una funzione della libreria STM32Cube HAL (Hardware Abstraction Layer). Cambia lo stato del pin GPIO specificato da alto a basso, o da basso ad alto.Onboard_LED_GPIO_Port: Questa è una macro generata automaticamente da CubeMX, che rappresenta la porta GPIO (ad esempio,GPIOCse il tuo LED è su PC13).Onboard_LED_Pin: Questa è una macro generata automaticamente da CubeMX, che rappresenta il numero di pin specifico (ad esempio,GPIO_PIN_13se il tuo LED è su PC13).
HAL_Delay(500): Questa funzione HAL crea un ritardo bloccante per il numero di millisecondi specificato. Qui, mette in pausa l’esecuzione per 500 ms (mezzo secondo).
Parte 4: Compila, carica e verifica
Finalmente, compiliamo il tuo codice, carichiamolo sulla scheda e vediamo il LED lampeggiare!
Collega la tua scheda:
Collega un’estremità del cavo USB alla porta USB appropriata sulla tua scheda di sviluppo STM32H7 (di solito etichettata “USB ST-LINK” o “USB USER”).
Collega l’altra estremità a una porta USB del tuo computer. Il tuo computer dovrebbe riconoscere la scheda.
Compila il progetto:
Vai a
Project > Build Projecto fai clic sull’icona del martello nella barra degli strumenti.Controlla la vista “Console” per eventuali errori o avvisi. Una compilazione riuscita mostrerà “Build Finished” e indicherà che non ci sono errori.
Carica il programma sulla scheda:
Vai a
Run > Debugo fai clic sull’icona Debug (un insetto verde).STM32CubeIDE configurerà automaticamente le impostazioni del debugger (ST-LINK).
Fai clic su
OKoSwitchse richiesto per passare alla prospettiva Debug.Il programma verrà compilato (se non lo è già), scaricato nella memoria flash della tua scheda STM32H7 e il debugger verrà avviato.
Osserva il LED lampeggiante:
Una volta completata la programmazione e l’avvio del programma, dovresti vedere il LED utente sulla tua scheda di sviluppo STM32H7 iniziare a lampeggiare su e giù, con un intervallo di mezzo secondo.
Esci dal debug:
Per interrompere il debugger e lasciare che il programma venga eseguito liberamente, fai clic sul pulsante rosso “Terminate” nella prospettiva Debug, quindi fai clic sul pulsante “Run” (riproduzione verde). In alternativa, scollega semplicemente il cavo USB e ricollegalo (il programma è già nella flash).
Per tornare alla prospettiva C/C++, fai clic su
Window > Perspective > Open Perspective > C/C++.
Parte 5: Conclusione e prossimi passi
Congratulazioni! Hai completato con successo il tuo primo progetto di programmazione embedded STM32H7. Hai imparato come:
Creare un nuovo progetto in STM32CubeIDE.
Configurare i pin GPIO utilizzando STM32CubeMX.
Scrivere codice C di base utilizzando le funzioni HAL.
Compilare, programmare ed eseguire il tuo programma sulla scheda STM32H7.
Prossimi passi:
Sperimenta con il ritardo: Modifica il valore
HAL_Delay()per far lampeggiare il LED più velocemente o più lentamente.Controlla più LED: Configura un altro pin GPIO come output e fai lampeggiare più LED contemporaneamente o in sequenza.
Input del pulsante: Configura un pin GPIO come input per leggere lo stato di un pulsante utente e controllare il LED in base alle pressioni del pulsante.
Esplora altri periferici: Dai un’occhiata all’utilizzo di UART per la comunicazione seriale, Timer per la temporizzazione precisa o ADC per le letture analogiche.
La programmazione STM32H7 beneficia di ampie librerie e middleware forniti da STMicroelectronics. Queste risorse semplificano il processo di aggiunta di funzionalità complesse alle tue applicazioni. Con un solido supporto della community e una documentazione dettagliata, iniziare a programmare con STM32H7 è semplice e raggiungibile.
Strumenti e software essenziali per lo sviluppo STM32H7
Intraprendere lo sviluppo STM32H7 richiede una suite di strumenti e software essenziali. Queste risorse garantiscono un flusso di lavoro efficiente e una gestione completa del progetto. Scegliere gli strumenti giusti migliora notevolmente il processo di sviluppo.
Il primo passo consiste nella selezione di un ambiente di sviluppo integrato (IDE) compatibile. STM32CubeIDE è ideale per la programmazione STM32H7. Integra più funzioni, offrendo capacità di codifica, compilazione e debug in una piattaforma. Questa comodità è impareggiabile per gli sviluppatori.
Oltre a STM32CubeIDE, considera l’utilizzo di STM32CubeMX. Questo strumento grafico semplifica la configurazione delle impostazioni del microcontrollore. Consente una facile gestione delle periferiche e delle configurazioni dei pin, semplificando la fase di configurazione del tuo progetto.
Ecco un elenco di strumenti essenziali per lo sviluppo STM32H7:
- STM32CubeIDE: ambiente di sviluppo completo.
- STM32CubeMX: semplifica la configurazione delle periferiche.
- Strumenti di debug/programmazione: ST-LINK/V2 per il debug on-chip.
- Librerie e middleware: migliorano la funzionalità dell’applicazione.
ST-LINK/V2 è fondamentale per il debug e la programmazione in circuito. Consente agli sviluppatori di connettere senza problemi le proprie schede di sviluppo STM32H7 ai computer, fornendo informazioni dettagliate e controllo durante la risoluzione dei problemi. L’utilizzo di questi strumenti garantisce che lo sviluppo STM32H7 sia sia efficace che piacevole.
Conclusione
La serie STM32H7 offre prestazioni e versatilità senza pari. È una scelta solida per i progetti che richiedono una potenza di elaborazione robusta e un controllo preciso. Con la sua gamma di funzionalità, si rivolge a vari settori e applicazioni.
Prima di selezionare STM32H7, valuta i requisiti specifici del tuo progetto. Considera fattori come la velocità di elaborazione, la connettività e il budget. Se le prestazioni elevate e le funzionalità avanzate sono fondamentali, STM32H7 è probabilmente ben adatto a soddisfare le tue esigenze.



