bouton-led.ino
El montaje de botón más común, adaptado a los pines Arduino del core STM32: INPUT_PULLUP funciona en PA0 y el filtro de 30 ms limpia el rebote. El LED sigue la pulsación en directo en el monitor.
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. 1 botón pulsador (PA0 a GND).
Cableado
Botón entre PA0 y GND; pull-up interna activada. Todos los pines son 3,3 V máx: nunca 5 V en PA0.
Funcionamiento
El muestreo continuo + validación tras 30 ms de estabilidad es el patrón antirrebote estándar; digitalWrite(LED, stable) explota el activo-bajo sin condicional. 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
Contador de pulsaciones con copia en flash (sketch EEPROM/flash), o doble clic para dos acciones.
bouton-led.ino
// Bouton sur PA0 (vers GND) + LED PC13, anti-rebond 30 ms.
const int BOUTON = PA0;
const int LED = PC13;
const unsigned long ANTI_REBOND = 30;
bool dernier = HIGH, stable = HIGH;
unsigned long bord = 0;
void setup() {
pinMode(BOUTON, INPUT_PULLUP);
pinMode(LED, OUTPUT);
Serial.begin(115200);
}
void loop() {
bool lu = digitalRead(BOUTON);
unsigned long t = millis();
if (lu != dernier) bord = t;
if (t - bord >= ANTI_REBOND && lu != stable) {
stable = lu;
digitalWrite(LED, stable); // actif-bas : LOW = allume
Serial.println(stable ? "relache" : "APPUIE");
}
dernier = lu;
}