clignotante.ino
El LED azul de las placas GD32/Blue Pill está en PC13 y es activo en LOW: el clásico «por qué parpadea al revés» de la placa. millis() deja el bucle libre; el core STM32F1 maneja el GD32 tal cual.
Hardware necesario
Una placa de desarrollo GD32F103C8T6 (Cortex-M3 a 108 MHz, compatible pin a pin con Blue Pill), alimentada a 3,3 V/5 V, con un adaptador ST-Link o serie. Ninguno: basta el LED integrado.
Cableado
Nada que cablear (LED en PC13 por 4,7 k). Para un LED externo: pin por 330 Ω a GND, lógica activa-alta esta vez.
Funcionamiento
digitalWrite invierte LOW/HIGH para encender el LED activo-bajo. El core Roger Clark apunta al STM32F103; el GD32F103, clon casi binario, responde al mismo código a 108 MHz. Con Arduino: instale el core « STM32F1 » (Roger Clark, gestor de placas) y elija la placa « GD32F103C »; el LED de usuario es PC13 (activo en LOW). En C: biblioteca de firmware GD32F10x + ST-Link.
Para ir más lejos
Dos LED y un patrón, o el periodo pilotado por un potenciómetro en PA0 (siguiente sketch).
clignotante.ino
// Clignotement non bloquant — LED bleue sur PC13, activee a LOW.
const int LED = PC13;
const unsigned long PERIODE = 500;
bool etat = false;
unsigned long precedent = 0;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200); // Serial1 = PA9/PA10 (USB-Serie externe)
Serial.println("Clignotement GD32 (108 MHz)");
}
void loop() {
unsigned long t = millis();
if (t - precedent >= PERIODE) {
precedent = t;
etat = !etat;
digitalWrite(LED, etat ? LOW : HIGH); // actif-bas !
Serial.print("tick ");
Serial.println(analogRead(PA0)); // bruit de fond d'un entree flottante
}
}