bouton-led.ino
Le montage bouton le plus courant, adapté aux broches Arduino du core STM32 : INPUT_PULLUP fonctionne sur PA0 et le filtre de 30 ms nettoie les rebonds. La LED suit l'appui en direct sur le moniteur.
Matériel requis
Une carte de développement GD32F103C8T6 (Cortex-M3 108 MHz, compatible broche à broche Blue Pill), alimentée en 3,3 V/5 V, avec un adaptateur ST-Link ou série. 1 bouton poussoir (PA0 vers GND).
Branchement
Bouton entre PA0 et GND ; pull-up interne activée. Toutes les broches sont en 3,3 V max — jamais de 5 V sur PA0.
Fonctionnement
L'échantillonnage continu + validation après stabilité 30 ms est le patron anti-rebond standard ; digitalWrite(LED, stable) exploite l'actif-bas sans condition. Avec Arduino : installez le core « STM32F1 » (Roger Clark, gestionnaire de cartes) et choisissez la carte « GD32F103C » ; le LED utilisateur est PC13 (actif à LOW). En C : bibliothèque GD32F10x + ST-Link.
Pour aller plus loin
Compteur d'appuis avec sauvegarde flash (sketch EEPROM/flash), ou double-clic pour deux actions.
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;
}