Basic Timer

유명현·2021년 6월 28일
0

안녕하세요?

오늘은 타이머를 사용해보도록 하겠습니다.

<타이머 특징 비교표>

위에 보시게 되면 타이머는 3가지 종류로 나뉘어 지는것을 볼 수 있습니다.

1) Basic Timer : 단순한 형태의 16bit 타이머로써 input/output 핀 없이 순수 time base generator 동작을 수행하는 타이머 입니다.

2) General Purpose Timer : 16/32 bit 타이머로써 Input Capture, Ouput Capture , PWM 등의 기능을 제공하는 타이머 입니다.

3) Adavanced Timer : General Purpose 타이머 기능을 모두 제공하며, 추가적인 기능을 제공하는 타이머입니다.

<타이머 인터럽트 발생 예시>

타이머 인터럽트를 설정하게 되면 Auto Reload Register와 Prescaler 설정하게 되어 있습니다.

Prescaler는 CLK를 분주해서 사용하겠다는 의미로 현재 10000으로 설정되어 있다면, 클럭을 10000번을 세게되면 Auto Reload Register를 1씩 증가시킵니다.

Auto Reload Register는 8400으로 설정하였는데 Auto Reload Registe가 8400이 되면 타이머 인터럽트가 발생하게 됩니다.

<STM32CubeMX 설정 1>

먼저 타이머로 사용할 클럭은 APB timer clock를 사용합니다.

Timer 계산을 편리하게 위해 Clock Configuration에서 APB timer clock을 16MHz로 설정합니다.

Auto Reload Register와 Prescaler는 0부터 카운트하기 떄문에 -1을 한값을 CubeMX설정에 입력합니다.

1초 카운터를 만들기 위해 Prescaler를 1599로 Auto Reload Register를 9999로 설정합니다.

<STM32CubeMX 설정 2>

타이머 인터럽트를 발생시키기 위해서 NVIC설정을 추가합니다.

<Timer 예제>

위에 보시면 STM32CubeMX로 설정한 상태로 TIMER 초기화 함수가 작성되는것을 볼 수 있습니다.
타이머 인터럽트가 발생하게 되면 핸드러를 통해 Timer 콜백함수를 호출하므로 Timer 콜백함수안에 GPIO를 제어하여 LED가 1초마다 토글되는것을 확인할 수 있습니다.

profile
기억보다 기록을

0개의 댓글