为什么把这两个定时器放到一起,因为它们都是32位的定时器,它们除了外设基地址不同外,其他都相同。
说说这两个定时器的特性
1.两个32位定时器定时器/计数器各含有一个可编程的32位预分频器;
2.计数器或定时器操作;
3.定时器0有3路、定时器1有4路捕获通道。当输入信号跳变时可取得定时器的瞬时值,也可选择使捕获事件产生中断;
4.每个定时器共有4个32位匹配寄存器,匹配时的动作有下面三种:
匹配时定时器继续工作,可选择产生中断。
匹配时定时器停止工作,可选择产生中断。
匹配时复位定时器,可选择产生中断。
5.定时器0有3个、定时器1有4个对应于匹配寄存器的外部输出,匹配时的输出有如下4种:
匹配时设置为低电平
匹配时设置为高电平
匹配时翻转
匹配时无动作
6.对于每个定时器,多达4个匹配寄存器可配置为PWM,允许使用多达3个匹配输出作为单边沿控制的PWM输出。
如果接下来就是说一大推寄存器的话,肯定犯困。我开始就是从头开始看那么多寄存器看的犯晕。但是换个方式,从定时器应用出发,再来细看定时器寄存器,一下子会豁然开朗不少。
就定时器的应用来说,一共有3个。一是单纯的作为定时器,二是作为比较匹配。三就是定时器用作捕获功能。
先看看定时器用作定时功能时寄存器的模块图
1.32位定时器TC的计数频率由Fpclk经过预分频计数器得到
2.定时器的启动/停止、计数复位由TCR控制
3.需要注意的是,定时器溢出不会产生中断,定时器的中断是由捕获事件或匹配事件引发的,所以上图最后那根线是虚线。
再看定时器用作比较匹配时的寄存器框图
1.定时器的比较匹配功能由寄存器MCR进行控制
2.MR0~3存放的是四路比较匹配通道的比较值
3.当发生匹配时,按照MCR设置的方法产生中断或复位TC等
4发生匹配时,EMR控制匹配引脚输出——高电平、低电平、引脚电平翻转等。
最后是定时器用作捕获功能时寄存器的框图
1.定时器的捕获功能由寄存器CCR进行控制
2.通过CCR寄存器,捕获事件可以设定为上升沿触发,下降沿触发、双边沿触发
3.通过CCR寄存器,可以设定当捕获事件发生时,是否产生中断
4.CR0~3为4路捕获寄存器,保存对应的捕获值
看见以上的定时器的三个功能,操作方法自然也大概明了了:
1.计算定时器的时钟频率,设置PR寄存器进行分频工作
2.若使用匹配功能,则需配置匹配通道的初值及其工作模式;若使用捕获功能时,需设置捕获功能相关的寄存器。
3.如果要使用到定时器中断,则需设置VIC,使能中断。、
4.最后设置TCR,启动定时器。
定时器计数时钟频率如下:
计数时钟频率 = Fpclk / (N+1)
N为PR的值
知道一个大概,然后再看具体的寄存器,我是觉得这样比较好些。
先是寄存器汇总,看看关于定时器0与定时器1总共有多少个寄存器:
下面分类介绍寄存器。先说基本的寄存器:
1.中断标志寄存器(T0IR、T1IR)
包含4个用于匹配中断的标志位,4个用于捕获中断的标志位。具体描述如下图,如果有中断产生,则相应寄存器位置1,否则为0.向相应标志位写1会清除该中断标志位,写0无效。
2.定时器控制寄存器(T0CR、T1CR)
该寄存器用于控制定时器计数器的操作。
3.定时器计数器(T0TC、T1TC)
当预分频的计数器到达计数的上限时,32位定时器计数器TC加1。如下图所示,如果TC到达计数上限之前没有被复位,它会一直计数到0XFFFFFFFF然后翻转到0X00000000,该事件不会产生中断。如果需要,可以用匹配寄存器检测溢出。
4.预分频寄存器(T0PR、T1PR)
32位预分频寄存器指定了预分频计数器的最大值
5.预分频计数器寄存器(T0PC、T1PC)
预分频计数器使用某个常量来控制Pclk的分频,可实现控制定时器分辨率和定时器溢出之间的关系。预分频计数器每个Pclk周期加1,当达到预分频寄存器中保存的值时,定时器计数器加1,预分频计数器在下个Pclk周期复位。当PR=0时,
定时器计数器每个Pclk加1,;当PR=1时,定时器计数器每2个Pclk周期加1,如下图所示。
下面介绍第二部分寄存器,匹配功能寄存器组。
匹配功能寄存器组包括匹配寄存器、匹配控制寄存器和外部匹配寄存器。其中,匹配寄存器用来存放定时器的匹配值,发生匹配事件时,匹配控制寄存器用来设置定时器的工作。而外部匹配寄存器则用来设置匹配输出引脚的动作。
1.匹配寄存器(MR0~MR3)
匹配寄存器连续与定时器计数值(TC)相比较,当两个值相等时,则自动触发产生中断,复位定时器计数器或停止计数器,执行的动作由MCR寄存器控制。
2.匹配控制寄存器(T0MCR、T1MCR)
控制匹配发生时定时器进行的操作。
3.外部匹配寄存器(T0EMR,T1EMR)
外部匹配寄存器提供外部匹配引脚MATn.0~MATn.3(n为0或1)的控制和状态。当匹配输出为PWM输出时,外部匹配寄存器的功能由PWM决定。
下面介绍的是捕获功能寄存器组
它包括:捕获寄存器和捕获控制寄存器。其中捕获控制寄存器用来设置捕获信号,发生捕获事件时,定时器的计数值保存到捕获寄存器中。
1.捕获寄存器(CR0~CR3)
每个捕获寄存器都与一个器件管脚相关联。当管脚发生特定的事件时,可将定时器计数值装入该寄存器,捕获控制寄存器的设定决定捕获功能是否使能以及捕获事件在管脚的上升沿、下降沿或是双边沿发生。
2.捕获控制寄存器
功能有:
设置捕获事件发生的位置,上升沿,下降沿还是上升沿+下降沿
捕获事件发生时,是否产生中断。
下图寄存器描述中,'n'代表定时器的编号0或1,每路捕获功能,都是由三个位控制的。
最后剩下的就是一些跟定时器0和1有关的其他寄存器
1.计数控制寄存器(T0CTR、T1CTR)
计数控制寄存器用来选择定时模式还是计数模式,同时在计数模式下,用来选择引脚和选择边沿计数(上升沿还是下降沿)
选择计数模式后,捕获输入引脚(由CTCR[3:2]来选择)在每个Pclk的上升沿采样。在比较两个连续的捕获输入引脚采样值之后,将会识别为上升沿、下降沿。边沿的任一种或捕获输入引脚的电平有没有变化。只有CTCR[1:0]设置的事件被识别后,定时计数器才会增加。
给计数器提供的外部时钟有些限制。因为需要连续两个Pclk的上升沿才能识别一个捕获输入引脚的变化,捕获输入引脚的输入频率不能超过Pclk的1/2,这种情况下,高/低电平的持续时间必须不小于1/Pclk。
2.PWM控制寄存器(PWM0CON,PWM1CON)
此寄存器用来控制匹配输出为PWM输出。每个匹配输出可独立的设置为PWM输出。对于每个定时器,最多可以选择3个单边沿PWM输出在MATn.2:0上。另外一个匹配寄存器用来决定PWM输出的周期,当其他任何一个匹配寄存器发生匹配时,PWM输出将置为高电平。定时器可被选择作为PWM周期的匹配寄存器复位。当定时器复位为0时,所有PWM的输出将会置为低电平。
下面是单边沿控制PWM输出的规则:
1.除了在匹配值为0的情况之外,每个PWM周期的开始,所有控制的PWM输出为低(此时定时器设置为0)
2.匹配寄存器发生匹配时,相关的PWM输出将会置高。如果没有匹配发生(例如,匹配值大于PWM周期),PWM输出将会一直输出低电平
3.如果匹配寄存器的值大于PWM输出周期,且PWM的输出为高电平,则在定时器复位时,PWM输出将会被清零。
4.如果有一个匹配寄存器的值跟PWM周期值一样,则在下一个时钟PWM周期计数时钟之后将会复位,因此,一个PWM将由一个时钟宽度的高电平组成,宽度由PWM的计数时钟决定。
5.如果一个匹配寄存器的值为0,则第一次的PWM输出为高电平。同时在定时器复位之后还将一直保持高电平。
接着说明关于定时器的中断。
LPC2103有两个32位定时器,每个定时器可以产生8种类型的中断。4路匹配中断、4路捕获中断,可以读取中断标志寄存器(TnIR)来区分中断类型。下图是定时器中断与向量中断控制器(VIC)的关系
1.匹配中断
LPC2103定时器溢出不会产生中断,但匹配可以产生中断。每个定时器都有4个匹配寄存器,存放匹配值。当定时器的计数值TC等于MR时,就可以产生中断。切寄存器TnMCR控制匹配中断的使能。下图就是以定时器0为例的匹配中断说明:
2.捕获中断
当定时器的捕获引脚CAP上出现特定捕获信号时,可以产生中断。下图以CAP0.0为例说明:
以上就是定时器0和定时器1的全部内容了,感觉LPC2103的定时器还是蛮强大的。下来做个简易的频率计巩固这节的知识。
参考《EasyARM2103教材》
上一篇:LPC2103学习之PLL
下一篇:LPC2103学习之外部中断
推荐阅读最新更新时间:2024-03-16 14:51