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%
// 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
}