🛠 Premier téléversement sur la STM32F4DISCOVERY avec l'Arduino STM32duino

STM32F4DISCOVERY (kit Discovery STM32F407VGT6) · debutant · Schéma : STM32F4DISCOVERY vue de dessus avec les quatre LED utilisateur (verte PD12, orange PD13, rouge PD14, bleue PD15), le bouton USER sur PA0 et les deux ports micro-USB (ST-LINK à gauche, OTG FS à droite) ; à côté, l'Arduino IDE avec la carte STM32F407G-DISC1 sélectionnée.

Objetivo

Hacer funcionar la placa STM32F4DISCOVERY (MCU STM32F407VGT6: Cortex-M4F a 168 MHz, 1024 KB de flash, 192 KB de RAM incluyendo 64 KB en memoria acoplada al núcleo CCM, encapsulado LQFP100) con el ecosistema Arduino. Al finalizar el tutorial, se ejecuta un barrido de LED en la placa y el botón USER responde — sin ningún cableado externo.

Material

Instalación

  1. En el Arduino IDE, abra el Gestor de placas e instale « STM32 STM32 boards by STMicroelectronics » (Arduino_Core_STM32).
  2. Seleccione la familia Discovery, luego la placa « STM32F407G-DISC1 » (constante DISCO_F407VG, variante STM32F4xx/F407V(E-G)T_F417V(E-G)T, cortex-m4 con FPU hardware fpv4-sp-d16, 1 MB de flash / 128 KB de datos).
  3. Cargue el programa: la programación se realiza a través del ST-LINK/V2-A embarcado (SWD), no hay bootloader DFU en el lado del usuario en este puerto.

La trampa n.º 1: el puerto serie

La documentación de Zephyr es explícita: « ST-Link Virtual Com Port is not wired to chip serial port » en las placas de fábrica. La variante de Arduino, en cambio, etiqueta USART2 (PA2/PA3) como « Connected to ST-Link » — contradicción documentada según las revisiones (jumpers de la zona CN3/CN5 a verificar, ausentes en algunas). Regla práctica: pruebe Serial, y si no sale nada, conecte un cable serie externo a PA2/PA3 (UART2) a 115200 8N1.

Código completo

// Balayage des 4 LED + bouton USER — broches du variant officiel DISCO_F407VG
const int ledPins[4] = {LED_GREEN, LED_ORANGE, LED_RED, LED_BLUE}; // PD12, PD13, PD14, PD15

void setup {
  for (int i = 0; i < 4; i++) pinMode(ledPins[i], OUTPUT);
  pinMode(USER_BTN, INPUT);      // PA0, pull-down externe sur la carte
  Serial.begin(115200);          // USART2 PA2/PA3 — voir le piège ci-dessus
  Serial.println("STM32F4DISCOVERY ready");
}

void loop {
  for (int i = 0; i < 4; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(150);
    digitalWrite(ledPins[i], LOW);
  }
  if (digitalRead(USER_BTN) == HIGH) {   // actif à l'état HAUT sur cette carte
    Serial.println("USER pressed");
  }
}

Verificación esperada

Los LED verde, naranja, rojo y luego azul (pines PD12 a PD15) se encienden en secuencia al encender la placa. El botón USER (PA0, compartido con la función WKUP del MCU) se lee en estado alto cuando se pulsa. Si el puerto serie permanece mudo, no es culpa de su código: consulte el cable externo en UART2.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales