🛠 Faire clignoter la LED PC13
Objetivos
Descubrir la placa GD32F103C8T6 compatible con « Blue Pill » (el GD32F103 de GigaDevice es casi un « drop-in » pin a pin del STM32F103, Cortex-M3 con frecuencia de reloj de hasta 108 MHz) y hacer parpadear el LED integrado. Al final de este tutorial, sabrás instalar un core de Arduino adaptado al GD32, compilar, flashear y, sobre todo, entender por qué el LED de la Blue Pill se enciende cuando se escribe un nivel BAJO: está montado en activo-BAJO en PC13.
Material
- Placa « core board » GD32F103C8T6 (64 KB de flash) o GD32F103CBT6 (128 KB), formato Blue Pill (LQFP48)
- Programador ST-Link (SWD) con OpenOCD compatible con GD32 (por ejemplo, tool-openocd-gd32 de CommunityGD32Cores), o convertidor USB-serial para el bootloader del sistema en USART0
- LED integrado en PC13, cableado en activo-BAJO (encendido cuando el pin está en estado BAJO)
- Alimentación de 3,3 V únicamente: la alimentación y los pines de E/S del GD32F103 van de 2,6 a 3,6 V (algunos pines toleran 5 V, pero nunca alimentes la placa con 5 V en un pin no tolerante)
Código completo
Arduino IDE con el core comunitario CommunityGD32Cores/ArduinoCore-GD32 (URL del índice de placas: https://raw.githubusercontent.com/CommunityGD32Cores/GD32Core-New/main/package_gd32_index.json), placa « 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);
}
Verificación esperada
El LED parpadea con un destello breve (250 ms encendido) seguido de una pausa (750 ms apagado), es decir, un ciclo de aproximadamente 1 Hz. Si escribes HIGH y el LED se enciende, tu placa tiene un LED activo-ALTO (raro) o no estás en el pin correcto. Verifica también que el programa se esté ejecutando realmente: en estas placas, un flasheo que « tiene éxito » en un objetivo incorrecto deja el LED apagado.
Errores frecuentes
- LED « al revés »: en la Blue Pill, PC13 es activo-BAJO; olvidar la inversión produce un parpadeo invertido (o un LED que parece siempre encendido).
- Core de Arduino incorrecto: el core oficial de ST (Arduino_Core_STM32) no contiene ninguna variante GD32; utiliza el core CommunityGD32Cores o el core de Roger Clark (Arduino_STM32/GD32F1).
- El GD32 no es un STM32: la nota de aplicación AN001 de GigaDevice impone HSE_STARTUP_TIMEOUT = 0xFFFF (en lugar de 0x0500) en los proyectos derivados de código ST, de lo contrario el arranque puede quedar bloqueado esperando el cristal.
- BOOT0 dejado en estado alto: la placa arrancaría desde el bootloader del sistema (memoria a partir de 0x1FFF B000, dirección diferente a la del STM32F103) en lugar de tu programa.
- ST-Link que rechaza el objetivo: un OpenOCD « estándar STM32 » puede rechazar el GD32; utiliza una configuración de OpenOCD compatible con GD32.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinopotentiometre.inoArduinopont-uart.inoArduinooled-i2c.inoArduino