🛠 Premiers pas sur le Nucleo-144 STM32H743ZI : core STM32duino, ST-LINK et premier Blink
What you will build
The Nucleo-144 around the STM32H743ZI is ST's flagship Cortex-M7 board: up to 480 MHz, a double-precision (IEEE 754) FPU, 2 MB of dual-bank flash and up to 1 MB of RAM (192 KB TCM + up to 864 KB user SRAM + 4 KB backup SRAM). This first tutorial gets a blink and a serial log running under the Arduino experience, using the community STM32duino core (ST-backed).
Hardware
- 1 Nucleo-144 STM32H743ZI (flagship reference of the H7 Nucleo family) + a data-grade USB cable
- No wiring needed: the onboard LED and the ST-LINK virtual COM port are enough
- The board's on-board ST-LINK/V2-1 debugger/programmer enumerates mass storage, a virtual COM port and the debug port over one USB socket — no external probe required
Step 1 — Install the STM32duino core
- In Arduino IDE 2.x, open Boards Manager and add the index URL
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json. - Install the STM32 Boards core, then select the board Nucleo H743ZI (supported since core 1.5.0; the H743ZI2 board entry exists since core 1.6.0).
- Note: since core 2.8.0 only Arduino IDE 2.x is supported — upgrade the IDE if you are still on 1.x.
Step 2 — The sketch
// Blink + serial + analog + double-precision FPU smoke test.
// Board: "Nucleo H743ZI" under the STM32duino "STM32 Boards" core.
#include <Arduino.h>
volatile double sink; // keep the FPU loop from being folded away
void setup {
pinMode(LED1, OUTPUT); // LED1 = core alias for the onboard LED (LD1, PB0)
Serial.begin(115200); // ST-LINK virtual COM port, 115200 8N1
sink = 0.0; // H7 FPU is double-precision — no tricks needed
for (int i = 1; i <= 1000000; i++) sink += 1.0 / (i + 0.5);
}
void loop {
digitalWrite(LED1, HIGH);
delay(150);
digitalWrite(LED1, LOW);
delay(150);
int raw = analogRead(A0); // 3 ADCs, up to 16-bit; A0..A27 exist on this variant
Serial.printf("A0=%u fpu=%.6f\n", raw, sink);
delay(500);
}
Step 3 — Flash and watch
Plug the USB cable into the socket labelled with the ST-LINK symbol, upload, and open the serial monitor at 115200. The console lands on the variant's default UART wired to the ST-LINK virtual COM port (the Zephyr mapping uses UART3 on PD8/PD9 — check your core version's variant mapping).
Expected result
LD1 blinks at roughly 3 Hz and the monitor prints a rolling A0=... fpu=... line — proof the 480 MHz core, the double-precision FPU and the VCP serial all work. The STM32duino variant's SystemClock_Config runs 480 MHz SYSCLK out of the box (HSE 8 MHz, PLLM=1, PLLN=120, PLLR=2, regulator at voltage scale 0).
Common pitfalls
- ZI vs ZI2 pinout trap: the two boards share the same MCU and ST product page but wire the Arduino header differently — the core keeps two distinct
digitalPin[]tables, so picking the wrong board silently remaps every D/A pin. - Old cores are unsafe on this board: the H743ZI variant shipped with a
digitalPin[]typo fixed only in core PR #1383 — use a recent core. - The H743ZI is obsolete: ST discontinued it and recommends the NUCLEO-H753ZI for new designs; everything here also applies to the sibling H7 Nucleo-144 boards.
- A charge-only USB cable shows no COM port — try a data cable.
Other tutorials for this board
- GPIO, ADC 16 bits et DAC sur le Nucleo STM32H743ZI : bouton, LED et potentiomètre
- MicroPython sur le Nucleo STM32H743ZI : le REPL 480 MHz via le port série ST-LINK
- Zephyr RTOS sur le Nucleo STM32H743ZI : west build, flash et le piège des 96 MHz
- STM32Cube HAL à 480 MHz sur le STM32H743ZI : VOS0, latence flash et HSE bypass
- FreeRTOS sur le Nucleo STM32H743ZI : le projet officiel CubeH7, tâches et file d'attente
- Serveur web sur l'Ethernet du STM32H743ZI : démo LwIP officielle, RMII et errata