🛠 Graduer une LED avec le PWM d'un timer

GD32F103 (GigaDevice) — chip + placas compatibles Blue Pill · intermediaire · Schéma : IMG-gd32f103-intermediaire-1-pwm-led.svg — LED externe avec résistance 330 ohms sur PA6 pilotée en PWM par un timer du GD32F103C8, signal dent de scie annoté

Objetivos

Utilizar la salida PWM (MDP en francés) de uno de los temporizadores de 16 bits del GD32F103 para variar progresivamente la luminosidad de un LED. El GD32F103C8 dispone de hasta 10 temporizadores generales de 16 bits, 2 temporizadores avanzados y 2 temporizadores básicos; el núcleo Arduino comunitario mapea analogWrite sobre los canales de los temporizadores. Comprenderás el principio del ciclo de trabajo y la restricción de reloj APB1 (máx. 54 MHz) / APB2 (máx. 108 MHz).

Material

Código completo

// pwm_led.ino — GD32F103C8, core CommunityGD32Cores
const uint8_t PWM_PIN = PA6;   // sortie timer (cf. tableau AF du core) > 

void setup {
  pinMode(PWM_PIN, OUTPUT);
  Serial.begin(115200);
}

void loop {
  for (int p = 0; p <= 255; p += 4) {   // rampe montante
    analogWrite(PWM_PIN, p);
    Serial.println(p);
    delay(15);
  }
  for (int p = 255; p >= 0; p -= 4) {   // rampe descendante
    analogWrite(PWM_PIN, p);
    delay(15);
  }
}

Verificación esperada

El LED externo sube y baja de luminosidad de forma continua (respiración), sin saltos bruscos. Con un analizador lógico o un osciloscopio, se observa una señal rectangular de frecuencia constante cuyo ciclo de trabajo sigue la rampa 0-255. El LED integrado PC13, en cambio, no parpadea: no está en este canal.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales