[펌웨어] STM32F4 강의 - PWM
최초작성일: 21년 3월 10일
준비물: STM32F105, ST-LINK, 오실로스코프
Index
1. PWM 설명
2. PWM 타이머 설정
3. PWM Duty Rate 설정
4. PWM Duty Rate 실시간 변경
1. PWM 설명
- 기본은 Timer 인터럽트에 배경을 두고 있음
- Prescale을 이용하여 HCLK를 일정 줄여줌
- AutoReload Register를 이용하여 해당 값에 도달하면 인터럽트가 발생하며 다시 처음으로 돌아감.
- 타이머 인터럽트 주기 만큼 PWM의 주기가 됨.
- 아래 그림과 같이 타이머가 Up Count 하는 동안 CCR(Capture Compare Register)을 통해 Duty를 조절함.
2. PWM 타이머 설정
1) HCLK 값은 72 MHz 임을 확인함
2) 타이머 설정
- Prescaler = 1+1, Counter Period(AutoReload Register) = 35999 + 1.
- HCLK(72,000,000) ÷ Prescaler(1+1) ÷ AutoReload Register(35999+1) = 0.001.
- 즉 1번 펄스가 발생할 때 0.001초 걸리므로 1초면 1000번 발생하므로 1000 Hz 임을 알 수 있음.
- Pulse(35999+1) 이므로 현재 Duty Rate는 100% 임을 알수 있음.
3. PWM Duty Rate 설정
- PWM을 시작한다는 Start 함수를 실행함
- Channel의 CCR1 값을 변경해줌으로써 Duty Rate를 변경해줌
4. PWM Duty Rate 실시간 변경
- 값을 0 -> 100 으로 1씩 증가하여 Duty Rate를 변경함
※ 강좌에서는 arr을 변경하게 되면 중간에 PWM이 멈춘다고 하여 Prescaler를 변경하였지만
현재 작성하고 있는 시점에는 괜찮음. 버그? 가 해결 된것 같음
Referece:
www.youtube.com/watch?v=2Y_QoSYBJ0U