Skip to content

STM32 PWM LED fade (breathing light) demo on NUCLEO-F103RB (PA6/TIM3_CH1). Demonstrates basic PWM duty-cycle control for brightness adjustment — a foundation for motor speed/servo control.

License

Notifications You must be signed in to change notification settings

Yubin-dev0/STM32_PWM_LED_Fade

Repository files navigation

PWM LED Fade with STM32 (NUCLEO-F103RB)

English Description

This project demonstrates smooth LED brightness control using PWM on the STM32 NUCLEO-F103RB board. The LED is connected to D12 (PA6, TIM3_CH1) with a current-limiting resistor.
The duty cycle is swept up and down to create a breathing effect.

  • Board: STM32 NUCLEO-F103RB
  • Pin used: D12 (PA6 → TIM3_CH1, PWM out)
  • Timer: TIM3, Channel 1
  • PWM Frequency: 1 kHz
  • Duty Cycle: 0 → 100% → 0
  • TIM3_CH1(PA6), Prescaler=71, Period=999 (1 kHz), Pulse start=0

한국어 설명

이 프로젝트는 STM32 NUCLEO-F103RB 보드에서 PWM을 이용해 LED 밝기를 서서히 변화시키는 호흡등 효과 예제입니다.
LED는 D12 (PA6, TIM3_CH1) 핀에 220Ω 저항과 직렬로 연결되어 있으며,
코드에서 듀티 비율을 증가/감소시키며 제어합니다.

  • 사용 보드: STM32 NUCLEO-F103RB
  • 사용 핀: D12 (PA6 → TIM3_CH1, PWM 출력)
  • 타이머: TIM3, 채널 1
  • PWM 주파수: 1 kHz
  • 듀티 사이클: 0% → 100% → 0%

Demo Video

PWM LED Fade Demo (YouTube)

Core Code

// Start PWM on TIM3 Channel 1 (PA6, D12)
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);

uint32_t duty = 0;   // 0 ~ 999
int8_t step = 5;     // Brightness step

while (1)
{
    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, duty);

    duty += step;
    if (duty >= 999) { duty = 999; step = -step; }
    else if (duty <= 0) { duty = 0; step = -step; }

    HAL_Delay(5); // Adjust for fade speed
}

About

STM32 PWM LED fade (breathing light) demo on NUCLEO-F103RB (PA6/TIM3_CH1). Demonstrates basic PWM duty-cycle control for brightness adjustment — a foundation for motor speed/servo control.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages