그라운드 임베디드 유튜브 구독

노트 / MCU 펌웨어

타이머: 정확한 주기와 시간 재기

타이머는 클럭을 세는 카운터입니다. 주기 인터럽트, 입력 캡처로 펄스 폭 재기, 엔코더 모드까지.

GROUND EMBEDDED · 정리 노트펌웨어 05타이머모드용도업데이트 인터럽트정확한 제어 주기 (1kHz 속도 루프)출력 비교 / PWM모터, LED 밝기

기본 동작

타이머 입력 클럭 → PSC(프리스케일러)로 나눔 → CNT가 1씩 증가 → ARR에 도달하면 0으로 돌아가며 업데이트 이벤트

주기 = (PSC + 1) × (ARR + 1) / 타이머 클럭

100MHz 타이머로 1kHz 인터럽트: PSC = 99 (1MHz), ARR = 999 → 1ms

쓰임

모드 용도
업데이트 인터럽트 정확한 제어 주기 (1kHz 속도 루프)
출력 비교 / PWM 모터, LED 밝기
입력 캡처 펄스 폭, 주파수 측정 (서보 신호, 초음파 센서)
엔코더 모드 A/B상 신호로 위치 자동 카운트
트리거 출력 (TRGO) ADC 샘플링 시점 지정

입력 캡처로 시간 재기

신호 에지가 들어오는 순간 CNT 값이 CCR에 자동 저장됩니다. 상승 에지와 하강 에지의 CCR 차이가 펄스 폭입니다. 소프트웨어로 재는 것보다 지터가 없습니다.

HAL_Delay와의 차이

HAL_Delay는 SysTick을 기다리며 CPU를 묶어 둡니다. 주기적인 일은 타이머 인터럽트나 RTOS 태스크로 돌려야 다른 일을 동시에 할 수 있습니다.