1. stm32 타이머 종류
- Basic, == 타이머 6, 7에 해당 됨
- general purpose
- advanced timer
2. 타이머 : 내부클럭에 의해서 동작
카운터 : 외부 클럭에 의해서 동작
3. 기본적인 타임동작은 시간에 따라 카운터가 증가하는 time base generator 임
4. STM32 타이머의 종류에는 Systick, WatchDog, Basic Timer,
General purpose Timer, Advanced Timer가 있다.
5. timer 동작모드
- Input Capture 모드 : 외부 이벤트의 Frequency를 측정하는 기능을 수행할 수 있음
= 입력 주파수, 입력 펄스폭 측정
= 리모콘에 응용
- Output Compare 모드 : 정해진 주기( 설정 값)에 따라 Output 을 제어할 수 있음
- PWM 모드 : 일정한 임의의 파형을 생성할 수 있다 == 제어용
6. Basic 타이머: 가장 단순한 형태의 시간기반 타이머 용도로사용되며,
16Bit 타이머로서 입출력 핀이 없다.
단순이 오버플로워나 컴프메치 타이머 기능만 수행함
기본 타이머는 업데이트 이벤트가 DAC에 대한 DMA 요청을 트리거
할 수 있기 때문에 DAC 주변 장치를 공급하는 데도 사용된다.
기본 타이머는 다른 타이머의 마스터로도 사용할 수 있다.
7. General Purpose 타이머 : 16/32Bit타이머로 기본 타이머와 같이 시간 기반 생성기로
사용할 수 있다. 이 타이머는 1~4개의 프로그래밍 가능한 입력/출력 채널을 제공한다.
동작모드는 : – 입력 캡처 – 출력 비교 – PWM 생성 – 원펄스 모드 출력
즉,. Input Capture, Output Compare, PWM 모드 등의 기능을 제공함.
==>> 이 기능들은 출력 비교(타이밍 및 지연 생성), 원펄스 모드,
입력 캡처(외부 신호 주파수 측정용), 센서 인터페이스(엔코더, 홀 센 서) 등을 위한 모든 애플리케이션 등에서 사용된다.
8. Advanced 타이머:: 기본적으로 General Purpose 타이머의 기능은 모두 제공하며, 특정 기능에 특화된 타이머이다.
즉,. 이 타이머는 범용 타이머보다 많은 기능을 가지는 타이머로 모터제어, 전력변환(인버터등의 데드 타임 삽입, 비상 종료 입력이 있는 3개의 보완 신호) 등의 특정 어플리케이션에 사용된다.
9. Systick 타이머
항상 동작하는 시스템 타이머, HAL_Delay()함수등에 사용된다. 1ms 주기로 인터럽트를
제공하기도 한다.
10. WatchDog 타이머
CPU의 오동작을 탐지하여 문제가 발생하면 재부팅시켜주는 타이머로 주로 양산시
신뢰성 향상을 위하여
사용되며, 즉 MCU 다운되는걸 방지해줌 = 사용시에는 주기적으로 타이머를 클리어
시켜줘야 합니다.
11. 저전력 타이머 (Low power timers)
저전력 애플리케이션을 위해 특별히 설계되었고, 다양한 클록 소스 덕분에 이 타이머는 모든 전원 모드(대기 모드 제외)에서 계속 실행할 수 있다.
내부 클록 소스 없이도 실행할 수 있는 이 기능을 감안할 때 저전력 타이머 는 일부 애플리케이션에서 유용할 수 있는 펄스 카운터로 사용할 수 있다. 또한 저전력 모드에서 시스템을 깨우는 기능도 있다.
Prescaler: 타이머로 들어오는 APB1, APB2 클럭을 나누기 위한 Prescaler 값
Period: 타이머의 주기를 결정하는 최대 값, ==>> 이 값을 0x0 으로 설정 시 타이머
구동이 중지 됨 == 이를 응용하면 타이머 중지 명령어를 만들 수 있음
12. 주요 타이머 레지스터
Counter register (TIMx_CNT)
카운터 레지스터, 카운터 값 자체를 저장하는 레지스터로 종류에 따라 up, down, up/down이 가능하다.
TIM2와 TIM5는 총 32비트 크기의 해상도를 가짐
Prescaler register (TIMx_PSC)
분주비 레지스터, 공급되는 클럭을 PSC[15:0]의 16비트 크기인 1~65,536 범위의 값으로 나누어 분주할 비를 설정하는 레지스터이다.
Auto-reload register (TIMx_ARR)
카운터 주기 레지스터
- up 카운터의 경우 : TIMx_CNT가 TIMx_ARR과 동일해지면 다시 0으로 카운터 된다.
- Down 카운터의 경우 : TIMx_CNT가 0이되면 TIMx_CNT의 값을 TIMx_ARR과 동일하게
하여 다시 감소한다.
Capture/Compare register (TIMx_CCR)
캡쳐/비교기 레지스터, 입력신호가 주어질때 TIMx_CNT의 값을 캡쳐하거나, TIMx_CNT와 TIMx_CCR가 동일해지면 인터럽트를 발생하거나 출력 채널로 0또는 1을 출력한다.