본문 바로가기
stm32

STM8S105K4T6 - 타이머 인터럽트(1ms)

by yura oh 2023. 1. 5.

펌웨어에서 기본적으로 사용하는 millis() 함수와 delay() 함수 구현을 위해서 1ms 타이머 인터럽트를 추가하였습니다.

STM8S105에 타이머는 총 4개가 있으며 TIM4가 8비트 타이머로 되어 있고 기능이 많이 없어서 이 타이머를 이용해서 1ms 인터럽트 발생용으로 사용하기로 했습니다.

 

타이머 설정을 하기 전에 타이머의 기준이 되는 클럭 설정을 먼저 진행해야 합니다. 타이머의 기준이 되는 클럭이 정확히 얼마인지 알아야만 계산이 가능하기 때문입니다.

아래 그림을 보면 CPU 클럭과 주변 장치 클럭 입력으로 fMASTER가 사용되고 외부클럭 혹은 내부의 클럭들을 선택할 수 있습니다.

사용 할려는 클럭은 내부의 HSI 16Mhz를 사용 할려고 합니다.

처음 시작시에는 HSI 16Mhz로 설정이 되어 있고 8분주로 되어서 최종 16Mhz/8 = 2Mhz로 동작을 합니다. 16Mhz로 변경하기 위해서는 이 분주 값을 변경하면 됩니다.

 

타이머 사양을 보면 prescaler는 3비트로 되어 있고 1, 2, 4, 8, 16, 32, 64, 128 로 분주가 가능합니다.

아래 그림은 입력 16Mhz일때 유효한 Prescaler 값에서 1ms 주기를 가지기 위한 설정 값 계산입니다. 64분주로 하고 Auto-reload Register 값을 250 클럭을 주면 정확히 1ms의 주기로 인터럽트 발생이 가능해 집니다.

 

 

 

 

'stm32' 카테고리의 다른 글

flash  (0) 2023.01.17
reset count  (0) 2023.01.11
led gpio 함수초기화설정  (0) 2023.01.08