티스토리 뷰

ARM Cortex-M

PWM

Just4Fun 2017. 4. 8. 15:43

이번에는 타이머 기능중 많이 사용하는 PWM 기능을 구현해 보기로 하겠다.

STM32F103에 들어 있는 타이머는 AVR에 비해서 다소 복잡한 면이 있다.  일일이 그 차이점과 특징에 대해서 분석을 완료하지 못한 상태라 현재로서는 설명할 능력이 안된다.

다만, 최소한의 코드를 작성하여 PWM이 동작되는지만 확인해 보는것으로 진행하도록 하겠다.

시험을 위하여 PA0 핀으로 PWM 신호를 내 보내도록 하겠다.  PA0 핀은 TIM2의 CH1을 설정하여 PWM으로 사용하도록 되어 있다.

동작 확인을 위하여 PA0핀에 또다른 LED 하나를 연결시키도록 한다.

19,20번 줄은 PA0 핀을 출력으로 설정하기 위한 코드이다.

27번줄은 APB1버스에 연결되어 있는 TIM2 블럭을 enable 하는 코드이다.

28번줄은 TIM2 타이머를 초기화 하는데 autoreload 값을 1600으로 주었다.

29번줄은 TIM2의 CH1을 PWM1 모드로 설정해 주는 코드이며 CCR의 초기값으로 0을 주었다.

TIM2의 설정이 끝나면 마지막으로 타이머를 enable 시켜준다.

36번줄은 500ms 마다 CCR값을 100씩 증가 시키는 코드이다.  이값은 0 ~ 1500까지의 100의 배수값을 가질수 있게 된다.

실제 보드에서 실행시켜 보면 PA0에 연결된 LED가 16단계로 나누어서 차츰 밝아 지는것을 볼 수 있을 것이다.


pwm.zip


'ARM Cortex-M' 카테고리의 다른 글

ADC  (3) 2017.04.15
ST-Link/V2 SWD 연결 문제 해결  (4) 2017.04.15
Timer  (0) 2017.04.08
Cortex-M3 RTOS  (0) 2017.03.25
heap 메모리 이해  (1) 2017.03.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함