Timer/Counter Timer0 and 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复位一次。