🛠 Faire clignoter la LED PC13
Objectifs
Découvrir la carte GD32F103C8T6 compatible « Blue Pill » (le GD32F103 de GigaDevice est un quasi « drop-in » pin-à-pin du STM32F103, Cortex-M3 cadencé jusqu'à 108 MHz) et faire clignoter la LED embarquée. À la fin de ce tutoriel, vous saurez installer un core Arduino adapté au GD32, compiler, flasher, et surtout comprendre pourquoi la LED de la Blue Pill s'allume quand on écrit un niveau BAS : elle est montée en active-LOW sur PC13.
Matériel
- Carte « core board » GD32F103C8T6 (64 Ko de flash) ou GD32F103CBT6 (128 Ko), format Blue Pill (LQFP48)
- Programmeur ST-Link (SWD) avec OpenOCD compatible GD32 (par ex. tool-openocd-gd32 de CommunityGD32Cores), ou convertisseur USB-série pour le bootloader système sur USART0
- LED embarquée sur PC13, câblée en active-LOW (allumée quand la broche est à l'état BAS)
- Alimentation 3,3 V uniquement : l'alimentation et les broches d'E/S du GD32F103 vont de 2,6 à 3,6 V (certaines broches tolèrent 5 V, mais ne nourrissez jamais la carte en 5 V sur une broche non tolérante)
Code complet
Arduino IDE avec le core communautaire CommunityGD32Cores/ArduinoCore-GD32 (URL d'index des cartes : https://raw.githubusercontent.com/CommunityGD32Cores/GD32Core-New/main/package_gd32_index.json), carte « Generic GD32F103C8 ».
// blink_pc13.ino — GD32F103C8, core Arduino CommunityGD32Cores
#include <Arduino.h>
void setup {
pinMode(PC13, OUTPUT); // LED embarquée, active-LOW sur les cartes Blue Pill
}
void loop {
digitalWrite(PC13, LOW); // LED ALLUMÉE (logique inversée !)
delay(250);
digitalWrite(PC13, HIGH); // LED ÉTEINTE
delay(750);
}
Vérification attendue
La LED clignote avec un éclair bref (250 ms allumée) puis une pause (750 ms éteinte), soit un cycle d'environ 1 Hz. Si vous écrivez HIGH et que la LED s'allume, votre carte a une LED active-HIGH (rare) ou vous n'êtes pas sur la bonne broche. Vérifiez aussi que le programme tourne réellement : sur ces cartes, un flash qui « réussit » sur un mauvais cible laisse la LED éteinte.
Erreurs fréquentes
- LED « à l'envers » : sur la Blue Pill, PC13 est active-LOW ; oublier l'inversion donne un clignotement inversé (ou une LED qui semble toujours allumée).
- Mauvais core Arduino : le core officiel ST (Arduino_Core_STM32) ne contient aucun variant GD32 ; utilisez le core CommunityGD32Cores ou le core Roger Clark (Arduino_STM32/GD32F1).
- Le GD32 n'est pas un STM32 : la note d'application AN001 de GigaDevice impose HSE_STARTUP_TIMEOUT = 0xFFFF (au lieu de 0x0500) dans les projets issus de code ST, sinon le démarrage peut rester bloqué en attente du quartz.
- BOOT0 laissé à l'état haut : la carte booterait sur le bootloader système (mémoire à partir de 0x1FFF B000, adresse différente du STM32F103) au lieu de votre programme.
- ST-Link qui refuse la cible : un OpenOCD « standard STM32 » peut rejeter le GD32 ; utilisez une config OpenOCD compatible GD32.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinopotentiometre.inoArduinopont-uart.inoArduinooled-i2c.inoArduino