LPC2103之timer0 ang timer1
Page187
定時器/計數器有計劃的在外設時鐘(PCLK)或者外部提供的時鐘下進行循環計數,它可以基于四個匹配寄存器有選擇的在指定的定時值到達后產生中斷或者執行其它操作。它也括了四路捕獲輸入,用于捕獲變化信號的定時值,可選擇的產生中斷。
Pin description
| 管腳 | 類型 | 描述 |
| CAP0.2.0 CAP1.3.0 | Input | 捕獲信號——捕獲管腳的變化可以配置,捕獲寄存器中定時計數值加一,同時可以用選擇的產生中斷。以下是捕獲信號的列表: ?CAP0.0: P0.2 ?CAP0.1: P0.4 ?CAP0.2: P0.6 ?CAP1.0: P0.10 ?CAP1.1: P0.11 ?CAP1.2: P0.17 ?CAP1.3: P0.18 |
| MAT0.2.0 MAT1.3.0 | Output | 外部匹配輸出0/1——當一個匹配寄存器0/1等于定時計數值,這個輸出可能觸發,變高,變低,或者不變。外部匹配寄存器(EMR)和PWM控制寄存器(PWMCON)控制這個輸出的功能。以下是捕獲信號的列表: ?MAT0.0: P0.3 ?MAT0.1: P0.5 ?MAT0.2: P0.16 ?MAT1.0: P0.12 ?MAT1.1: P0.13 ?MAT1.2: P0.19 ?MAT1.3: P0.20 |
Register description
下面只列舉Timer 1的各個寄存器做說明,其它的Timer0/2/3都類似。
/************************************** Timer 1 *************************************/
/*************************定時器1的特殊寄存器*********************************/
//中斷寄存器
#define T1IR(*((volatile unsigned char *) 0xE0008000))
讀該寄存器值可以判斷是8個中斷源中的哪一個發生了中斷,寫1清除中斷,寫0無效。該寄存器包括了四個匹配中斷和四個捕獲中斷。一旦中斷產生則相應位置高,否則為低。
| 位 | 信號 | 描述 | 復位值 |
| 0 | MR0 interrupt | 匹配通道0中斷標志 | 0 |
| 1 | MR1 interrupt | 匹配通道1中斷標志 | 0 |
| 2 | MR2 interrupt | 匹配通道2中斷標志 | 0 |
| 3 | MR3 interrupt | 匹配通道3中斷標志 | 0 |
| 4 | CR0 interrupt | 捕獲通道0事件中斷標志 | 0 |
| 5 | CR1 interrupt | 捕獲通道1事件中斷標志 | 0 |
| 6 | CR2 interrupt | 捕獲通道2事件中斷標志 | 0 |
| 7 | CR3 interrupt | 捕獲通道3事件中斷標志 | 0 |
//定時器控制寄存器
#define T1TCR(*((volatile unsigned char *) 0xE0008004))
該寄存器用于控制定時器/計數器的操作。
| 位 | 信號 | 描述 | 復位值 |
| 0 | Counter Enable | 為1時,定時計數器和分頻計數器使能工作。為0時計數器關閉。 | 0 |
| 1 | Counter Reset | 為1時,定時計數器和分頻計數器在下一個PCLK的上升沿同步復位。計數器復位保持到該位返回0值。 | 0 |
| 7:2 | 保留 | NA |
//定時計數器
#define T1TC(*((volatile unsigned long *) 0xE0008008))
當分頻計數器(PC)到達了預定值后32bit定時計數器加1。達到限定值后復位,TC計數到達最大值0xffffffff后增1就復位為0x00000000。該事件不會引發中斷,但是如果需要的話匹配寄存器可以用于檢測是否溢出。
//分頻寄存器
#define T1PR(*((volatile unsigned long *) 0xE000800C))
32bit分頻寄存器指定了分頻計數器(PC)的計數最大值。
//分頻計數器寄存器
#define T1PC(*((volatile unsigned long *) 0xE0008010))
32bit分頻計數器對PCLK進行一些常量值的分頻,然后才用于定時計時器。分頻計數器每個PCLK時鐘加1,當其達到了存儲分頻寄存器(PR)的值后,定時計數器加1,并且分頻計數器在下一個PCLK復位。也就是說,PC=1,那么PC在每2個PCLK復位一次。


評論