这两天学习LPC2103的定时器。开始看前面的寄存器介绍看的有点头晕,一下子就搞混了。不过当我看到后面用图片描述定时器相关寄存器操做时,一下就明了了。知道应用再看原理后比较明了。 编程
为何把这两个定时器放到一块儿,由于它们都是32位的定时器,它们除了外设基地址不一样外,其余都相同。学习
说说这两个定时器的特性事件
1.两个32位定时器定时器/计数器各含有一个可编程的32位预分频器;图片
2.计数器或定时器操做;原理
3.定时器0有3路、定时器1有4路捕获通道。当输入信号跳变时可取得定时器的瞬时值,也可选择使捕获事件产生中断;配置
4.每一个定时器共有4个32位匹配寄存器,匹配时的动做有下面三种:定时器
匹配时定时器继续工做,可选择产生中断。方法
匹配时定时器中止工做,可选择产生中断。im
匹配时复位定时器,可选择产生中断。img
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教材》
天天进步一点。