LPC2103之timer0 ang timer1
时间:11-29
来源:互联网
点击:
Timer/Counter Timer0 and Timer1
Page187
定时器/计数器有计划的在外设时钟(PCLK)或者外部提供的时钟下进行循环计数,它可以基于四个匹配寄存器有选择的在指定的定时值到达后产生中断或者执行其它操作。它也括了四路捕获输入,用于捕获变化信号的定时值,可选择的产生中断。
Pin description
Register description
下面只列举Timer 1的各个寄存器做说明,其它的Timer0/2/3都类似。
/************************************** Timer 1 *************************************/
/*************************定时器1的特殊寄存器*********************************/
//中断寄存器
#define T1IR(*((volatile unsigned char *) 0xE0008000))
读该寄存器值可以判断是8个中断源中的哪一个发生了中断,写1清除中断,写0无效。该寄存器包括了四个匹配中断和四个捕获中断。一旦中断产生则相应位置高,否则为低。
//定时器控制寄存器
#define T1TCR(*((volatile unsigned char *) 0xE0008004))
该寄存器用于控制定时器/计数器的操作。
//定时计数器
#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复位一次。
//匹配控制寄存器
#define T1MCR(*((volatile unsigned short *) 0xE0008014))
匹配控制寄存器用于控制当一个匹配寄存器和定时计数器相匹配时将执行什么操作。
//匹配寄存器
//匹配寄存器0
#define T1MR0(*((volatile unsigned long *) 0xE0008018))
//匹配寄存器1
#define T1MR1(*((volatile unsigned long *) 0xE000801C))
//匹配寄存器2
#define T1MR2(*((volatile unsigned long *) 0xE0008020))
//匹配寄存器3
#define T1MR3(*((volatile unsigned long *) 0xE0008024))
匹配寄存器的值将不断的和定时计数器(TC)的值进行比较。当二者相等时,相应行为将被自动触发。该行为可能产生一个中断、复位定时计数器、或者停止定时器。该行为由MCR寄存器的设置决定。
//捕获控制寄存器
#define T1CCR(*((volatile unsigned short *) 0xE0008028))
捕获控制寄存器用于控制四个捕获寄存器之一是否在捕获事件发生时加载定时计数器值,以及该捕获事件是否产生中断。
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复位一次。
//匹配控制寄存器
#define T1MCR(*((volatile unsigned short *) 0xE0008014))
匹配控制寄存器用于控制当一个匹配寄存器和定时计数器相匹配时将执行什么操作。
位 | 信号 | 描述 | 复位值 |
0 | MR0I | 写1时,当MR0与TC匹配将产生中断;写0关闭此功能。 | 0 |
1 | MR0R | 写1时,当MR0与TC匹配将会复位;写0关闭此功能。 | 0 |
2 | MR0S | 写1时,当MR0与TC匹配将使PC和TC计数停止并且TCR[0]拉低(0);写0关闭此功能。 | 0 |
3 | MR1I | 写1时,当MR1与TC匹配将产生中断;写0关闭此功能。 | 0 |
4 | MR1R | 写1时,当MR1与TC匹配将会复位;写0关闭此功能。 | 0 |
5 | MR1S | 写1时,当MR1与TC匹配将使PC和TC计数停止并且TCR[0]拉低(0);写0关闭此功能。 | 0 |
6 | MR2I | 写1时,当MR2与TC匹配将产生中断;写0关闭此功能。 | 0 |
7 | MR2R | 写1时,当MR2与TC匹配将会复位;写0关闭此功能。 | 0 |
8 | MR2S | 写1时,当MR2与TC匹配将使PC和TC计数停止并且TCR[0]拉低(0);写0关闭此功能。 | 0 |
9 | MR3I | 写1时,当MR3与TC匹配将产生中断;写0关闭此功能。 | 0 |
10 | MR3R | 写1时,当MR3与TC匹配将会复位;写0关闭此功能。 | 0 |
11 | MR3S | 写1时,当MR3与TC匹配将使PC和TC计数停止并且TCR[0]拉低(0);写0关闭此功能。 | 0 |
15:12 | 保留 |
//匹配寄存器
//匹配寄存器0
#define T1MR0(*((volatile unsigned long *) 0xE0008018))
//匹配寄存器1
#define T1MR1(*((volatile unsigned long *) 0xE000801C))
//匹配寄存器2
#define T1MR2(*((volatile unsigned long *) 0xE0008020))
//匹配寄存器3
#define T1MR3(*((volatile unsigned long *) 0xE0008024))
匹配寄存器的值将不断的和定时计数器(TC)的值进行比较。当二者相等时,相应行为将被自动触发。该行为可能产生一个中断、复位定时计数器、或者停止定时器。该行为由MCR寄存器的设置决定。
//捕获控制寄存器
#define T1CCR(*((volatile unsigned short *) 0xE0008028))
捕获控制寄存器用于控制四个捕获寄存器之一是否在捕获事件发生时加载定时计数器值,以及该捕获事件是否产生中断。
LPC2103timer0timer 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)