Timer 마이크로 프로세서 (Micro Processor) 2015 년 2 학기 충북대학교 전자공학과 박 찬식 교육관 325 호, T
들어가기 학습 목표 Timer 강의 내용 Introduction General-purpose timer 2
Introduction Timer STM32 에 구현된 타이머 SysTick Timer, Independent watchdog timer (IWDG), Window watchdog timer (WWDG), Advanced-control timers (TIM1&TIM8) STM32F103RB 에는 TIM1 만 존재 General-purpose timer (TIMx - TIM2, TIM3, TIM4 and TIM5) STM32F103RB 에는 TIM2, TIM3, TIM4 등 3 개의 timer 존재 Etc. 3
General purpose timer 16-bit up, down, up/down auto-reload counter. 16-bit programmable prescaler used to divide (also “on the fly”) the counter clock frequency by any factor between 1 and Up to 4 independent channels for: Input capture Output compare PWM generation (Edge- and Center-aligned modes) One-pulse mode output Synchronization circuit to control the timer with external signals and to interconnect several timers. Interrupt/DMA generation on the following events: Update: counter overflow/underflow, counter initialization (by software or internal/external trigger) Trigger event (counter start, stop, initialization or count by internal/external trigger) Input capture Output compare Supports incremental (quadrature) encoder and hall-sensor circuitry for positioning purposes Trigger input for external clock or cycle-by-cycle current management 4
Advanced control timer 16-bit up, down, up/down auto-reload counter. 16-bit programmable prescaler allowing dividing (also “on the fly”) the counter clock frequency either by any factor between 1 and Up to 4 independent channels for: Input Capture Output Compare PWM generation (Edge and Center-aligned Mode) One-pulse mode output Complementary outputs with programmable dead-time Synchronization circuit to control the timer with external signals and to interconnect several timers together. Repetition counter to update the timer registers only after a given number of cycles of the counter. Break input to put the timer’s output signals in reset state or in a known state. Interrupt/DMA generation on the following events: Update: counter overflow/underflow, counter initialization (by software or internal/external trigger) Trigger event (counter start, stop, initialization or count by internal/external trigger) Input capture Output compare Break input Supports incremental (quadrature) encoder and hall-sensor circuitry for positioning purposes Trigger input for external clock or cycle-by-cycle current management 5
6 General- purpose timer (TIM2~4)
Time-base unit 프로그램이 가능한 타이머의 핵심 블록 16 bit CNT counter + auto-reload register Up / Down / Up and Down counter 동작 Prescaler 이용 카운터 clock 분주 주요 Registers Counter Register(TIMx_CNT) Prescaler Register(TIMx_PSC) Auto-Reload Register(TIMx_ARR) 7
General-purpose timer (TIM2~4) Time-base unit Prescaler Generating CK_CNT from CK_PSR if CNT_EN = 1 카운터 clock 주파수를 1~65536 의 숫자로 나눌 수 있음 8 Counter timing diagram with prescaler division change from 1 to 2 새로 바뀐 프리스케일러 비율은 다음 업데이트 이 벤트에 쓰임 카운터는 TIMx_CR1 레지 스터의 counter enable bit (CEN) 이 세트되어 있을 때만 동작
General-purpose timer (TIM2~4) Time-base unit Prescaler /4 example 9 Counter timing diagram with prescaler division change form 1 to 4
General-purpose timer (TIM2~4) Counter modes Up counting mode Down counting mode Center aligned mode (up/down counter) Upcounting mode 0 1 2 … TIMx_ARR 에 설정된 값 0 1 … TIMx_ARR 에 설정된 값을 넘어가면 overflow event 발생 업데이트 이벤트 (UEV) 는 카운트 overflow 혹은 TIMx_EGR.UG = 1 에 의해 발생 (UG = Update Generation) UEV 발생하면 카운터 = 0, TIMx_PSC, TIMx_ARR = preload 버퍼에 저장되어 있던 설정값 반복 카운터 사용 시, 반복 카운터 레지스터 (TIMx_RCR) 에 지정된 횟수만큼 overflow 가 반복되었을 때 UEV 발생 TIMx_CR1.UDIS = 1 로 설정하면 UEV 발생하지 않음 10
General-purpose timer (TIM2~4) Ex: Upcounting mode TIMx_ARR = 0x36 Internal clock divided by 1 or 4 11 Update event 발생시 업데이트 플래그 (UIF bit in TIMx_SR register) 세트
General-purpose timer (TIM2~4) Ex: Upcounting mode TIMx_ARR: 0x36 Update event when ARPE=0 and ARPE=1 12
General-purpose timer (TIM2~4) Counter modes Upcounting mode 예 (TIMx_ARR: 0x36) Counter timing diagram, Update event when ARPE=1 (TIMx_ARR preloaded) 13
General-purpose timer (TIM2~4) Downcounting mode TIMx_ARR TIMx_ARR -1 … 1 0 TIMx_ARR … 0 을 넘어가면 underflow event 발생 업데이트 이벤트 (UEV) 는 카운트 underflow 혹은 TIMx_EGR.UG = 1 에 의해 발생 (UG = Update Generation) UEV 발생하면 카운터 = 0, TIMx_PSC, TIMx_ARR = preload 버퍼에 저장되어 있던 설정값 반복 카운터 사용 시, 반복 카운터 레지스터 (TIMx_RCR) 에 지정된 횟수만큼 overflow 가 반복되었을 때 UEV 발생 TIMx_CR1.UDIS = 1 로 설정하면 UEV 발생하지 않음 14
General-purpose timer (TIM2~4) Counter modes Downcounting mode 예 (TIMx_ARR: 0x36) Counter timing diagram, internal clock divided by 1 15
General-purpose timer (TIM2~4) Ex: Downcounting mode 예 TIMx_ARR: 0x36 Internal clock divided by 1 and 4 16
General-purpose timer (TIM2~4) Center-aligned mode(up/down counting) … TIMx_ARR TIMx_ARR -1 … 1 0 1 2 … Overflow event 와 underflow event 를 모두 발생 overflow event: TIMx_ARR – 1 에 도달하면 발생 underflow event: 1 에 도달하면 발생 이 모드에서는 TIMx_CR1 레지스터의 DIR 비트를 설정할 수 없음 출력 모드로 설정된 채널에서 출력 비교 인터럽트 플래그는 다음과 같을 때 세트됨 CMS[1:0] = 01, Center aligned mode 1, downcount CMS[1:0] = 10, Center aligned mode 2, upcount CMS[1:0] = 11, Center aligned mode 3, up and down 17
General-purpose timer (TIM2~4) Ex : Center-aligned mode TIMx_ARR: 0x06 Counter timing diagram, internal clock divided by 1 and 4 18
General-purpose timer (TIM2~4) Ex: Center-aligned mode Update event with ARPE=1 (underflow) and Update event with ARPE=1 (overflow) 19
General-purpose timer (TIM2~4) Clock selection 선택 가능한 clock sources Internal clock (CK_INT) SMS=000 in the TIMx_SMCR register External clock mode1: external input pin (TIx) SMS=111 in the TIMx_SMCR register External clock mode2: external trigger input (ETR). ECE=1 in the TIMx_SMCR Internal trigger inputs (ITRx): Using one timer as prescaler for another timer, for example, you can configure Timer1 to act as a prescaler for Timer TIMx_SMCR: Slave Mode Control Register - SMS: Slave Mode Selection - ECE: External Clock Enable
General-purpose timer (TIM2~4) Internal Clock Source (CK_INT) SMS = 000 In normal mode, internal clock divided by 1 21
General-purpose timer (TIM2~4) External Clock mode 1 External Clock Connection example (to configure the upcounter to count in response to a rising edge on the TI2 input) Configure channel 2 to detect rising edges on the TI2 input by writing TIMx_CCMR1.CC2S= ‘01 Configure the input filter duration by writing the TIMx_CCMR1.IC2F[3:0] bits (if no filter is needed, keep IC2F=0000). Select rising edge polarity by writing TIMx_CCER.CC2P=0 Configure the timer in external clock mode 1 by writing TIMx_SMCR.SMS=111 Select TI2 as the input source by writing TIMx_SMCR.TS=110 Enable the counter by writing TIMx_CR1.CEN=1 22
General-purpose timer (TIM2~4) External Clock Source mode 1 When a rising edge occurs on TI2, the counter counts once and the TIF flag is set. The delay between the rising edge on TI2 and the actual clock of the counter is due to the resynchronization circuit on TI2 input. 23
General-purpose timer (TIM2~4) External Clock mode 2 External Trigger input block(to configure the upcounter to count each 2 rising edges on ETR) As no filter is needed in this example, write TIMx_SMCR.ETF[3:0]=0000 Set the prescaler by writing TIMx_SMCR.ETPS[1:0]=01 Select rising edge detection on the ETR pin by writing TIMx_SMCR.ETP=0 Enable external clock mode 2 by writing TIMx_SMCR.ECE=1 Enable the counter by writing TIMx_CR1.CEN=1 24
General-purpose timer (TIM2~4) External Clock Source mode 2 The counter counts once each 2 ETR rising edges. Upcounter to count each 2 rising edges on ETR The delay between the rising edge on ETR and the actual clock of the counter is due to the resynchronization circuit on the ETRP signal. 25
General-purpose timer (TIM2~4) Capture/Compare channels General-purpose 타이머의 캡쳐 / 비교 채널 입력 캡쳐 기능과 출력 비교 기능을 수행 출력 비교에서 PWM 출력 기능이 중요 각 채널에는 캡쳐 / 비교 레지스터 TIMx_CCRx 를 가지고 있음 이 레지스터는 각각 1 개씩의 preload 레지스터를 가지고 있어 이를 통해 해당 레지스터를 액세스 26
General-purpose timer (TIM2~4) Capture/compare channels: input stage 입력 단자에서 들어오는 신호 TIMx_CHx 는 내부에서 TIx 로 변경 Tix 필터를 거쳐 TIxF edge detector 를 거쳐 TIxFPy Prescaler 를 거쳐 ICxPS 입력 캡쳐 트리거 신호로 사용 27
General-purpose timer (TIM2~4) Capture/compare channels: main circuit (channel 1) 28
General-purpose timer (TIM2~4) Capture/compare channels: output stage (channel 1) 출력단에서는 카운터 (CNT) 값과 캡쳐 / 비교 레지스터 (CCR1) 값을 비교하여 대소관계 신호를 만듦 출력모드 제어기를 거치면 기본 출력파형 신호 OCxREF 신호로 바뀜 29
General-purpose timer (TIM2~4) Input capture mode 캡쳐 / 비교 레지스터 (TIMx_CCRx) 는 ICx 신호에 캡쳐 트리거 신호가 들어올 때 현재의 카운터 값을 캡쳐하여 저장 상태 레지스터 TIMx_SR 의 CCxIF 플래그를 1 로 설정 만약 CCXIF=1 로 설정되어 있을 때 또다시 캡쳐가 발생하면 오버 캡쳐 에러가 되어 상태 레지스터 TIMx_SR.CCxOF=1 로 설정 CCxIF 플래그는 TIMx_CCRx 레지스터 값을 읽으면 클리어되며, 해당 비트를 소프트웨어적으로 0 으로 클리어할 수 있음 인터럽트가 발생 (Option) DMA request 가 발생 (Option) 30
General-purpose timer (TIM2~4) Input capture mode: (TI1 을 이용하여 TIMx_CCR1 에 카운터 값을 캡쳐하기 위한 설정 ) Active input 선택 TIMx_CCR1 (Capture/Compare Reg) 이 TI1 input 에 연결되어야 함 TIMx_CCMR1.CC1S[1:0] = 01 CC1S 값이 0 이 아닌 값이면 input mode, 이때 TIMx_CCR1 은 read-only Input filter duration 설정 TIMx_CCMRx.ICxF (Input Capture x Filter) bits 를 설정 새로운 레벨이 감지되었을 때 필터에 설정한 값 (ICxF[3:0]) 이상의 연속된 샘플이 얻어졌을 때 capture 가 일어날 수 있도록 설정 신호의 변화를 rising edge 나 falling edge 에서 인식하게 만들 수 있음 TIMx_CCER.CC1P(Capture/Compare Output Polarity) = 0: rising edge Input prescaler 설정 : TIMx_CCMR1.IC1PS bits 설정 TIMx_CCER register CC1E bit 설정 : E nable 신호 Options TIMx_DIER (DMA/Interrupt Enable Register) 의 CC1IE (Compare/Capture Interrupt Enable) bit 의 설정으로 인터럽트가 발생할 수 있도록 설정 TIMx_DIER register 의 CC1DE (Compare/Capture DMA Request Enable) bit 를 설정해서 DMA request 가 일어나도록 설정 31
General-purpose timer (TIM2~4) Input capture mode: 입력 캡쳐 동작 (TI1 에 의해 채널 1 의 캡쳐 트리거 발생 시 ) 카운터 레지스터 TIMx_CNT 값이 TIMx_CCR1 레지스터에 캡쳐되어 저장 상태 레지스터 TIMx_SR 의 CC1IF 인터럽트 플래그가 설정 인터럽트 플래그가 클리어되지 않은 상태에서 입력 캡쳐가 수행되면 오버 캡쳐 에러가 발생하여 CC1OF 플래그가 1 로 설정됨 TIMx_DIER.CC1IE = 1 로 설정되어 있었다면 인터럽트가 발생하고 해당하는 인터럽트 핸들러가 호출됨 TIMx_DIER.CC1DE = 1 로 설정되어 있었다면 DMA request 발생 32
General-purpose timer (TIM2~4) PWM input mode 입력 캡쳐 모드의 특별한 형태 입력 캡쳐 모드와 다음을 제외하고 동일한 procedure 1 개의 TIx 입력에 2 개의 ICx 신호가 연결 2 개의 ICx 신호는 active edge 가 서로 반대로 동작 2 개의 TIxFPx 신호중에서 1 개는 트리거 신호로 사용되고 슬레이브 모드 컨트롤러는 리셋 모드로 설정 예 –TI1 신호의 rising edge 에서 IC1, IC2 의 capture reset – 이후 falling edge 에서 IC2 capture – 다시 rising edge 에서 IC1 capture, – 이 때 비로소 인터럽트가 발생해서 두 capture 된 값을 비교해서 한번에 PWM 신호의 입력 주파수 duty cycle 을 알아낼 수 있음 33
General-purpose timer (TIM2~4) PWM input mode PWM 입력신호 듀티비 (duty cycle) 측정 예 입력신호 TI1 에 대해 TIMx_CCR1 레지스터로 주기를 TIMx_CCR2 레지스터로 듀티비 (duty cycle) 을 측정하는 예 34
General-purpose timer (TIM2~4) PWM input mode PWM 입력신호 duty cycle) 측정을 위한 설정 예 TIMx_CCMR1.CC1S[1:0]=01: TIMx_CCR1 입력으로 TI1 설정 TIMx_CCER.CC1P=0: TI1FP1 rising edge 에서 동작 TIMx_CCMR1.CC2S[1:0]=10: TIMx_CCR2 입력으로 TI1 설정 TIMx_CCER.CC2P=1: TI1FP2 falling edge 에서 동작 TIMx_SMCR.TS[2:0]=101: valid trigger input 으로 TI1FP1 이 선택 TIMx_SMCR.SMS[2:0]=100: slave mode controller 를 reset mode 선택된 trigger input (TRGI) 의 rising edge 에서 counter 와 레지스터가 update TIMx_CCER.CC1E=1, TIMx_CCER.CC2E=1: capture Enable 35
General-purpose timer (TIM2~4) Output compare mode 카운터의 값과 캡쳐 / 비교 레지스터의 값을 비교하여 출력파형 발생 비교 매치가 발생하면 다음 동작 수행 출력 핀의 값은 TIMx_CCMRx.CCxM 비트에서 지정, 출력신호의 극성은 TIMx_CCER.CCxP 비트에서 지정 TIMx_SR.CCxIF=1 로 설정되며, TIMx_DIER.CCxIE=1 이면 인터럽트 발생 TIMx_DIER.CCxDE=1 이고, TIMx_CR2.CCDS=0 이면 DMA request 발생 출력비교 모드에서 업데이트 이벤트는 OCxREF 와 OCx 출력에 아무런 영향을 주지 않음 출력비교 모드는 단일 펄스모드로 사용될 수 있음 설정 순서 카운터의 clock 소스를 선택한다. TIMx_ARR 레지스터 및 TIMxCCRx 레지스터 값을 지정한다. 비교 매치에서 인터럽트 발생을 원하면 CCxIE 를 1 로 설정한다. 출력 모드를 설정하고 CCxE 를 1 로 설정하여 출력 신호를 설정한다. 출력 모드는 CCxM[2:0] 으로 설정한다. TIMx_CR1 레지스터의 CEN 을 1 로 설정하여 카운터를 허용한다. 36
General-purpose timer (TIM2~4) Output compare mode Output compare mode, toggle on OC1 37
General-purpose timer (TIM2~4) PWM mode 출력비교 모드의 일종으로 PWM 신호를 출력 TIMx_ARR 레지스터에 의해 결정되는 주파수 TIMx_CCRx 레지스터에 의해 결정되는 듀티비 (duty cycle) 4 개의 OCx 채널 각각에 대해 독립적으로 설정할 수 있으며, TIMx_CCMRx.OCxM[2:0] 비트에 따라 PWM mode 1 또는 PWM mode 2 를 사용할 수 있음 PWM 의 모드 : TIMx_CCMRx.OCxM bit 를 설정함으로써 선택 110 : PWM mode 1 Upcounting mode : –If TIMx_CNT < TIMx_CCR then active(OC1REF=’1’) –Else inactive(OC1REF=’0’) Downcounting mode : –If TIMx_CNT < TIMx_CCR then active(OC1REF=’1’) –Else inactive(OC1REF=’0’) 111 : PWM mode 2 : mode 1 의 반대이다. 38
General-purpose timer (TIM2~4) PWM mode TIMx_CR1.CMS[1:0] 비트에 따라 edge-aligned mode 또는 center-aligned mode 로 PWM 신호를 발생 Edge-aligned mode 타이머가 upcounting 또는 downcounting 모드로 동작할 때 PWM 신호를 발생하는 모드로 신호는 1 주기 내에서 중앙 정렬되지 않음 Upcounting 모드 : TIMx_CR1.DIR = 0 인 경우 PWM mode 1: –If TIMx_CNT < TIMx_CCRx then OCxREF=1, else OCxREF=0 만약 TIMx_CCRx > TIMx_ARR 로 설정하면 OCxREF 가 항상 1 이 되어 듀티비가 100% TIMx_CCRx =0 으로 설정하면 OCxREF 가 항상 0 값을 가지게 되어 듀티비가 0% Downcounting 모드 : TIMx_CR1.DIR = 1 인 경우 PWM mode 1: –If TIMx_CNT > TIMx_CCRx then OCxREF=0, else OCxREF=1 만약 TIMx_CCRx > TIMx_ARR 로 설정하면 OCxREF 가 항상 1 이 되어 듀티비가 100% 이 모드에서는 듀티비가 0% 이 될 수 없다. 39
General-purpose timer (TIM2~4) PWM mode Edge-aligned mode Edge-aligned PWM waveforms (ARR=8) 40
General-purpose timer (TIM2~4) PWM mode Center-aligned mode Upcounting/downcounting 모드로 PWM 신호를 발생 신호는 1 주기 내에서 중앙 정렬 TIMx_CRx.CMS[1:0]=00 이 아닌 경우에 설정 OCRxREF 는 카운터가 증가하다가 비교 매치될 때 클리어되고, 감소하다가 비교 매치될 때 세트됨 비교 매치 인터럽트 플래그는 카운터가 증가하다가 비교 매치가 되었을 때 세트되도록 설정할 수도 있고 감소할 때 세트되도록 설정할 수도 있음 41
General-purpose timer (TIM2~4) PWM mode Center-aligned mode TIMx_ARR 레지스터의 값을 8 로 설정하였을 때 여러 TIMx_CCRx 레지스터 값에 따라 PWM 출력 신호 발생 예시 42
Appendix Registers for General Purpose Timer 43
General-purpose timer (TIM2~4) 레지스터 TIMx control register 1 (TIMx_CR1) Bits 9:8 CKD: Clock division. This bit-field indicates the division ratio between the timer clock (CK_INT) frequency and sampling clock used by the digital filters (ETR, TIx) Bit 7 ARPE: Auto-reload preload enable. Bits 6:5 CMS: Center-aligned mode selection Bit 4 DIR: Direction Bit 3 OPM: One-pulse mode Bit 2 URS: Update request source. This bit is set and cleared by software to select the UEV event sources. Bit 1 UDIS: Update disable. This bit is set and cleared by software to enable/disable UEV event generation. Bit 0 CEN: Counter enable 44
General-purpose timer (TIM2~4) 레지스터 TIMx control register 2 (TIMx_CR2) Bit 7 TI1S: TI1 selection Bits 6:4 MMS[2:0]: Master mode selection. These bits allow to select the information to be sent in master mode to slave timers for synchronization (TRGO). Bit 3 CCDS: Capture/compare DMA selection 45
General-purpose timer (TIM2~4) 레지스터 TIMx slave mode control register (TIMx_SMCR) Bit 15 ETP: External trigger polarity. This bit selects whether ETR or ETR is used for trigger operations Bit 14 ECE: External clock enable. This bit enables External clock mode 2. Bits 13:12 ETPS: External trigger prescaler. External trigger signal ETRP frequency must be at most 1/4 of CK_INT frequency. A prescaler can be enabled to reduce ETRP frequency. It is useful when inputting fast external clocks. Bits 11:8 ETF[3:0]: External trigger filter. This bit-field then defines the frequency used to sample ETRP signal and the length of the digital filter applied to ETRP. 46
General-purpose timer (TIM2~4) 레지스터 TIMx slave mode control register (TIMx_SMCR) Bit 7 MSM: Master/Slave mode Bits 6:4 TS: Trigger selection. This bit-field selects the trigger input to be used to synchronize the counter. Bits 2:0 SMS: Slave mode selection. When external signals are selected the active edge of the trigger signal (TRGI) is linked to the polarity selected on the external input (see Input Control register and Control Register description. 47
General-purpose timer (TIM2~4) 레지스터 TIMx DMA/Interrupt enable register (TIMx_DIER) Bit 14 TDE: Trigger DMA request enable Bit 12 CC4DE: Capture/Compare 4 DMA request enable Bit 11 CC3DE: Capture/Compare 3 DMA request enable Bit 10 CC2DE: Capture/Compare 2 DMA request enable Bit 9 CC1DE: Capture/Compare 1 DMA request enable Bit 8 UDE: Update DMA request enable Bit 6 TIE: Trigger interrupt enable Bit 4 CC4IE: Capture/Compare 4 interrupt enable Bit 3 CC3IE: Capture/Compare 3 interrupt enable 48
General-purpose timer (TIM2~4) 레지스터 TIMx DMA/Interrupt enable register (TIMx_DIER) Bit 2 CC2IE: Capture/Compare 2 interrupt enable Bit 1 CC1IE: Capture/Compare 1 interrupt enable Bit 0 UIE: Update interrupt enable 49
General-purpose timer (TIM2~4) 레지스터 TIMx status register (TIMx_SR) Bit 12 CC4OF: Capture/Compare 4 overcapture. flag refer to CC1OF description Bit 11 CC3OF: Capture/Compare 3 overcapture. flag refer to CC1OF description Bit 10 CC2OF: Capture/compare 2 overcapture. flag refer to CC1OF description Bit 9 CC1OF: Capture/Compare 1 overcapture flag. This flag is set by hardware only when the corresponding channel is configured in input capture mode. It is cleared by software by writing it to ‘0’. Bit 6 TIF: Trigger interrupt flag. This flag is set by hardware on trigger event. It is cleared by software. 50
General-purpose timer (TIM2~4) 레지스터 TIMx status register (TIMx_SR) Bit 4 CC4IF: Capture/Compare 4 interrupt flag. refer to CC1IF description Bit 3 CC3IF: Capture/Compare 3 interrupt flag. refer to CC1IF description Bit 2 CC2IF: Capture/Compare 2 interrupt flag. refer to CC1IF description Bit 1 CC1IF: Capture/compare 1 interrupt flag. If channel CC1 is configured as output: This flag is set by hardware when the counter matches the compare value, with some exception in center-aligned mode (refer to the CMS bits in the TIMx_CR1 register description). It is cleared by software. Bit 0 UIF: Update interrupt flag 51
General-purpose timer (TIM2~4) 레지스터 TIMx event generation register (TIMx_EGR) Bit 6 TG: Trigger generation. This bit is set by software in order to generate an event, it is automatically cleared by hardware. Bit 4 CC4G: Capture/compare 4 generation. refer to CC1G description Bit 3 CC3G: Capture/compare 3 generation. refer to CC1G description Bit 2 CC2G: Capture/compare 2 generation. refer to CC1G description Bit 1 CC1G: Capture/compare 1 generation. This bit is set by software in order to generate an event, it is automatically cleared by hardware. Bit 0 UG: Update generation. This bit can be set by software, it is automatically cleared by hardware. 52
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare mode register 1 (TIMx_CCMR1) The channels can be used in input (capture mode) or in output (compare mode). The direction of a channel is defined by configuring the corresponding CCxS bits. All the other bits of this register have a different function in input and in output mode. 53
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare mode register 1 (TIMx_CCMR1) Output compare mode Bit 15 OC2CE: Output compare 2 clear enable Bits 14:12 OC2M[2:0]: Output compare 2 mode Bit 11 OC2PE: Output compare 2 preload enable Bit 10 OC2FE: Output compare 2 fast enable Bits 9:8 CC2S[1:0]: Capture/Compare 2 selection Bit 7 OC1CE: Output compare 1 clear enable 54
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare mode register 1 (TIMx_CCMR1) Output compare mode Bits 6:4 OC1M: Output compare 1 mode These bits define the behavior of the output reference signal OC1REF from which OC1 and OC1N are derived. OC1REF is active high whereas OC1 and OC1N active level depends on CC1P and CC1NP bits. Bit 3 OC1PE: Output compare 1 preload enable Bit 2 OC1FE: Output compare 1 fast enable Bits 1:0 CC1S: Capture/Compare 1 selection 55
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare mode register 1 (TIMx_CCMR1) Input capture mode Bits 15:12 IC2F: Input capture 2 filter Bits 11:10 IC2PSC[1:0]: Input capture 2 prescaler Bits 9:8 CC2S: Capture/compare 2 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Bits 7:4 IC1F: Input capture 1 filter This bit-field defines the frequency used to sample TI1 input and the length of the digital filter applied to TI1. The digital filter is made of an event counter in which N events are needed to validate a transition on the output: 56
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare mode register 1 (TIMx_CCMR1) Input capture mode Bits 3:2 IC1PSC: Input capture 1 prescaler This bit-field defines the ratio of the prescaler acting on CC1 input (IC1). The prescaler is reset as soon as CC1E=0 (TIMx_CCER register). Bits 1:0 CC1S: Capture/Compare 1 selection This bit-field defines the direction of the channel (input/output) as well as the used input. 57
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare mode register 2 (TIMx_CCMR2) Output compare mode Bit 15 OC4CE: Output compare 4 clear enable Bits 14:12 OC4M: Output compare 4 mode Bit 11 OC4PE: Output compare 4 preload enable Bit 10 OC4FE: Output compare 4 fast enable Bits 9:8 CC4S: Capture/Compare 4 selection This bit-field defines the direction of the channel (input/output) as well as the used input. 58
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare mode register 2 (TIMx_CCMR2) Output compare mode Bit 7 OC3CE: Output compare 3 clear enable Bits 6:4 OC3M: Output compare 3 mode Bit 3 OC3PE: Output compare 3 preload enable Bit 2 OC3FE: Output compare 3 fast enable Bits 1:0 CC3S: Capture/Compare 3 selection This bit-field defines the direction of the channel (input/output) as well as the used input. 59
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare mode register 2 (TIMx_CCMR2) Input capture mode Bits 15:12 IC4F: Input capture 4 filter Bits 11:10 IC4PSC: Input capture 4 prescaler Bits 9:8 CC4S: Capture/Compare 4 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Bits 7:4 IC3F: Input capture 3 filter Bits 3:2 IC3PSC: Input capture 3 prescaler Bits 1:0 CC3S: Capture/Compare 3 selection 60
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare enable register (TIMx_CCER) Bit 13 CC4P: Capture/Compare 4 output polarity Bit 12 CC4E: Capture/Compare 4 output enable Bits 11:10 Reserved, must be kept at reset value. Bit 9 CC3P: Capture/Compare 3 output polarity Bit 8 CC3E: Capture/Compare 3 output enable Bits 7:6 Reserved, must be kept at reset value. Bit 5 CC2P: Capture/Compare 2 output polarity Bit 4 CC2E: Capture/Compare 2 output enable Bits 3:2 Reserved, must be kept at reset value. Bit 1 CC1P: Capture/Compare 1 output polarity Bit 0 CC1E: Capture/Compare 1 output enable 61
General-purpose timer (TIM2~4) 레지스터 TIMx counter (TIMx_CNT) Bits 15:0 CNT[15:0]: Counter value TIMx prescaler (TIMx_PSC) Bits 15:0 PSC[15:0]: Prescaler value The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). PSC contains the value to be loaded in the active prescaler register at each update event. TIMx auto-reload register (TIMx_ARR) Bits 15:0 ARR[15:0]: Prescaler value ARR is the value to be loaded in the actual auto-reload register. 62
General-purpose timer (TIM2~4) 레지스터 TIMx capture/compare register 1 (TIMx_CCR1) Bits 15:0 CCR1[15:0]: Capture/Compare 1 value TIMx_CCR2, TIMx_CCR3, TIMx_CCR4 역시 동일함 TIMx DMA control register (TIMx_DCR) Bits 12:8 DBL[4:0]: DMA burst length This 5-bit vector defines the number of DMA transfers (the timer recognizes a burst transfer when a read or a write access is done to the TIMx_DMAR address). Bits 4:0 DBA[4:0]: DMA base address TIMx DMA address for full transfer (TIMx_DMAR) Bits 15:0 DMAB[15:0]: DMA register for burst accesses 63