[Cortex-M3] 5. Systick, TimerX 제어하기 (2)

2019. 9. 9. 16:24개발 관련 학습정리/ARM(cortex-m3) Register 분석

반응형

 

이번에는 systick에 이어서 ARM의 타이머를 알아보도록 하자

 

 

 

먼저 sysclk이 AHB 프리스케일러로 들어온다. 여기서 분주비로 나눠서 시스템 클락, APB1, APB2로 제공된다.

APB1에서는 분주비로 나눠서 APB1의 페리페럴에게 제공된다.

또한, 타이머 2/3/4에게 제공되며 아까 나뉜 클락을 2배로 증폭시킬수도 있다.

APB2에서도 분주비로 나눠서 APB2의 페리페럴에게 제공한다.

 

 

 

 

 

이제 타이머들을 제어할 레지스터들을 다뤄보도록 하자.

1. TIMx_CR1 (TIMx Control Register1)

 

Bit 7 ARPE(Auto-reload preload enable) : 자동 리로드 프리로드 활성화 비트

Bit 4 DIR(Direction) : 타이머 방향을 조정하는 비트

Bit 0 CENt(Counter enable) : 타이머 카운터 활성화 비트

 

 

 

 

 

 

 

 

2. TIMx_SR (TIMx Status Register)

 

Bit 6 TIF(Trigger interrupt flag) : 트리거 인터럽트 플래그 비트

Bit 0 UIF(Update Interrupt flag) : 타이머 카운터 활성화 비트

 

 

 

 

 

 

 

 

3. TIMx_CNT (TIMx Counter)

 

CNT (Counter) : 0~25565까지 카운트의 최댓값을 설정 하는 비트이다.

 

 

 

 

 

 

 

4. TIMx_PSC (TIMx Prescaler)

 

PSC (Precsaler bit) : cortex-m3의 기본 72Mhz를 나누는 프리스케일러 비트이다. 

0~25565분주까지 설정 할 수 있다.

 

 

 

 

 

 

 

 

5. TIMx_DIER (TIMX DMA/interrupt enable register)

 

CCXIE (Capture/Compare X interrupt enable) : 타이머 모드인 capture/compare 모드를

해당 타이머에서 enable 한다.

 

UIE (Update interrupt enable) : 타이머 update 인터럽트를 enable하는 비트이다.

 

 

 

 

 

 

 

 

설명하지 못한 레지스터들의 비트들도 있지만 가장 많이 사용하는 위주로 정리해 보았다.

다음번엔 ADC와 DMA에 대하여 정리해보도록 하겠다.

ARM으로 배우는 임베디드 리눅스 시스템:CPU에서 안드로이드까지 총망라, 한빛미디어
반응형