🛠 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.

Objectif

Faire vivre la STM32F4DISCOVERY (MCU STM32F407VGT6 : Cortex-M4F à 168 MHz, 1024 Ko de flash, 192 Ko de RAM dont 64 Ko en mémoire couplée au cœur CCM, boîtier LQFP100) avec l'écosystème Arduino. À la fin du tutoriel, un balayage de LED s'exécute sur la carte et le bouton USER réagit — sans aucun câblage externe.

Matériel

Installation

  1. Dans l'Arduino IDE, ouvrez le Gestionnaire de cartes et installez « STM32 STM32 boards by STMicroelectronics » (Arduino_Core_STM32).
  2. Sélectionnez la famille Discovery, puis la carte « STM32F407G-DISC1 » (constante DISCO_F407VG, variante STM32F4xx/F407V(E-G)T_F417V(E-G)T, cortex-m4 avec FPU matériel fpv4-sp-d16, 1 Mo de flash / 128 Ko de données).
  3. Téléversez : la programmation passe par le ST-LINK/V2-A embarqué (SWD), il n'y a pas de bootloader DFU côté utilisateur sur ce port.

Le piège n°1 : le port série

La documentation Zephyr est explicite : « ST-Link Virtual Com Port is not wired to chip serial port » sur les cartes stock. Le variant Arduino, lui, étiquette USART2 (PA2/PA3) « Connected to ST-Link » — contradiction documentée selon les révisions (jumpers de la zone CN3/CN5 à vérifier, absents sur certains). Règle pratique : testez Serial, et si rien ne sort, branchez un câble série externe sur PA2/PA3 (UART2) à 115200 8N1.

Code complet

// 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");
  }
}

Vérification attendue

Les LED verte, orange, rouge puis bleue (broches PD12 à PD15) s'allument en séquence dès la mise sous tension. Le bouton USER (PA0, partagé avec la fonction WKUP du MCU) est lu à l'état haut quand on l'appuie. Si la série reste muette, ce n'est pas votre code : reportez-vous au câble externe sur UART2.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels