定时器3和4.docx
《定时器3和4.docx》由会员分享,可在线阅读,更多相关《定时器3和4.docx(18页珍藏版)》请在冰豆网上搜索。
定时器3和4
cc2530(定时器3和定时器4)
1、概述
定时器3和定时器4是两个8位定时器,每个定时器有两个独立的捕获/比较通道,每一通道使用一个I/O引脚。
定时器3/4有以下特点:
(1)、两个捕获/比较通道;
(2)、设置,清除或切换输出比较;
(3)、每时钟可以被以下分频:
1、2、4、8、16、32、64、128;
(4)、在每次捕获/比较和最终计数事件发生时产生中断请求;
(5)、DMA触发功能。
2、8位定时器的计数器
定时器3/4的所有定时器功能都是基于主要的8位计数器基础上的。
计数器在每一个活动时钟边沿递增或递减。
活动时钟边沿的周期由寄存器CLKCONCMD.TICKSPD[2:
0]来定义,且通过设置TxCTL.DIV[2:
0]来进一步划分(x为3或4)。
计数器操作模式有:
自由运行模式、倒计数器模式、模计数器模式和正/倒计数器模式。
可以通过读SFR寄存器TxCNT(x为3或4)来取得8位定时器的值。
通过设置TxCTL来清除和终止计数器。
设置TxCTL.START为1启动计数器,设置TxCTL.START为0时,计数器停留在它的当前值。
3、定时器3/4模式控制
一般上,控制寄存器TxCTL被用来控制定时器模式。
3.1、自由运行模式
计数器从0X00开始,在每一个活动时钟边沿递增,当计数器到达0XFF时,计数器重置为0X00并继续递增。
当最终计数器值到达0XFF时(如发生溢出),中断标志位TIMIF.TxOVFIF将被置1。
如已设置相应中断屏蔽位TxCTL.OVFIM,产生中断请求。
自由模式可以用于产生独立的时间间隔和输出信号频率。
3.2、倒模式
在倒模式中,定时器启动后,计数器读取TxCC0中的值,并开始递减,当到达0X00,标志位TIMIF.TxOVFIF置1。
如已设置相应中断屏蔽位TxCTL.OVFIM,产生中断请求。
倒模式一般用于需要事件超时间隔的应用程序。
3.3、在正/倒定时器模式
在此模式中,计数器重复操作:
从0X00递增到TxCC0里设置的值,然后递减到0X00。
这个定时器模式用于需要对称输出脉冲,且周期不是0XFF的应用程序。
因此它允许中心对齐的PWM输出应用程序的实现。
通过写入TxCTL.CLR清除计数器也会复位计数方向,即从0X00模式正计数。
4、通道模式控制
对于通道0和1,每个通道的模式是由控制和状态寄存器TxCCTLn(n为0或1)设置的。
设置包括捕获和比较模式。
4.1、输入捕获模式
当通道配置为输入捕获通道时,与该通道相关的I/O引脚必须配置为输入。
定时器启动后,输入引脚上的上升沿,下降沿或任何边沿都会触发一个捕获事件,即捕获8位计数器内容到相关的捕获寄存器中。
因此定时器可以捕获一个外部事件发生的时间。
注意:
一个引脚被用于定时器之前,要求相应I/O引脚必须被配置位Timer3/Timer4的外设引脚。
通道输入脚同步于内部系统时钟,因此,输入脚的脉冲最小持续时间要大于系统时钟周期。
通道n的8位捕获寄存器的内容可以从寄存器T3CCn/T4CCn里读取。
当发生捕获时,活动通道的相应中断标志位TIMIF.TxCHnIF被设置。
如已设置中断掩码位TxCCTLn.IM,将会产生中断请求。
4.2、输出比较模式
在输出比较模式中,与通道相关的I/O引脚要设置为输出。
在定时器启动后,计数器的内容与此通道的比较寄存器TxCC0n中的内容比较;如相等,根据TxCCTL.CMP[1:
0]的设置,输出引脚被设置、复位或转换。
注意当运行在一个给定的比较输出模式下,输出引脚上的所有边沿都是无故障运行的。
对于使用简单PWM,最好使用输出比较模式4和5。
写入比较寄存器TxCC0或TxCC1的输出比较值无效,除非计数寄存器的值为0X00。
当发生比较时,活动通道的相应中断标志位TIMIF.TxCHnIF被设置。
如已设置中断掩码位TxCCTLn.IM,将会产生中断请求。
5、定时器3/定时器4中断
每一个定时器都分配了一个中断向量,分别为T3和T4。
当有以下定时器事件发生时便产生中断请求:
(1)、计数器到达最终计数值;
(2)、比较事件;
(3)、捕获事件。
SFR寄存器TIMIF包含定时器3和定时器4的所有中断标志。
寄存器TIMIF.TxOVFIF和TIMIF.TxCHnIF包含2个最终计数值事件和4个通道比较事件。
只有相应中断掩码位设置了,中断请求才会产生。
如果有其他正在等待的中断,新中断产生之前相应的中断标志位必须被清除,同样,如果要产生新的中断请求,相应的的中断掩码位要设置。
6、定时器3和定时器4的DMA触发
定时器3和定时器4都分别有2个DMA触发器,分别为:
T3_CH0:
定时器3通道0捕获/比较;
T3_CH1:
定时器3通道1捕获/比较;
T4_CH0:
定时器4通道0捕获/比较;
T4_CH1:
定时器4通道1捕获/比较。
7、定时器3和定时器4寄存器
TnCNT定时器3/4计数器
端口
Bit位
名称
初始化
读/写
描述
T3CNT
7:
0
CNT[7:
0]
0X00
R
定时计数器字节
T4CNT
7:
0
CNT[7:
0]
0X00
R
定时计数器字节
T3CTL定时器3控制
端口
Bit位
名称
初始化
读/写
描述
T3CTL
7:
5
DIV[2:
0]
000
R/W
预分频器值。
产生有效时钟沿用于来自CLKCON.TICKSPD的定时器时钟如下:
000:
震荡频率/1
001:
震荡频率/2
010:
震荡频率/4
011:
震荡频率/8
100:
震荡频率/16
101:
震荡频率/32
110:
震荡频率/64
111:
震荡频率/128
4
START
0
R/W
启动定时器。
正常运行时设置,暂停时清除。
3
OVFIM
1
R/W0
溢出中断屏蔽
0:
禁止中断
1:
使能中断
2
CLR
0
R0/W1
清除计数器。
写1清除并重置计数器为0X00并初始化相关通道的所有输出引脚。
只能读0。
1:
0
MODE[1:
0]
00
R/W
定时器3模式,
00:
自由运行模式,从0X00到0XFF重复计数。
01:
倒模式,从T3CC0到0X00计数。
10:
模模式,从0X00到T3CC0重复计数。
11:
正/倒模式,从0X00到T3CC0再到0X00重复计数。
T4CTL
7:
5
DIV[2:
0]
000
R/W
预分频器值。
产生有效时钟沿用于来自CLKCON.TICKSPD的定时器时钟如下:
000:
震荡频率/1
001:
震荡频率/2
010:
震荡频率/4
011:
震荡频率/8
100:
震荡频率/16
101:
震荡频率/32
110:
震荡频率/64
111:
震荡频率/128
4
START
0
R/W
启动定时器。
正常运行时设置,暂停时清除。
3
OVFIM
1
R/W0
溢出中断屏蔽
0:
禁止中断
1:
使能中断
2
CLR
0
R0/W1
清除计数器。
写1清除并重置计数器为0X00并初始化相关通道的所有输出引脚。
只能读0。
1:
0
MODE[1:
0]
00
R/W
定时器4模式,
00:
自由运行模式,从0X00到0XFF重复计数。
01:
倒模式,从T4CC0到0X00计数。
10:
模模式,从0X00到T4CC0重复计数。
11:
正/倒模式,从0X00到T4CC0再到0X00重复计数。
T3CCTLn/T4CCTLn定时器3/4通道0/1捕获/比较控制
端口
Bit位
名称
初始化
读/写
描述
T3CCTL0
7
--
0
R0
没使用
6
IM
1
R/W
通道0中断掩码
0:
禁止中断
1:
使能中断
5:
3
CMP[2:
0]
000
R/W
通道0比较输出模式选择,当定时器值等于T3CC0中的比较值时输出脚的操作:
000:
发生比较时输出端置1
001:
发生比较时输出端置0
010:
发生比较时输出端翻转
011:
上升沿比较输出设置,0清除
100:
上升沿比较输出清除,0设置
101:
发生比较时输出端置1,0XFF清除
110:
发生比较时输出端置0,0X00设置
111:
初始化输出引脚,CMP[2:
0]不改变。
2
MODE
0
R/W
定时器3通道0模式选择
0:
捕获模式
1:
比较模式
1:
0
CAP[1:
0]
00
R/W
捕获模式选择
00:
无捕获
01:
上升边沿捕获
10:
下降边沿捕获
11:
所有边沿捕获
T3CCTL1
7
--
0
R0
没使用
6
IM
1
R/W
通道1中断掩码
0:
禁止中断
1:
使能中断
5:
3
CMP[2:
0]
000
R/W
通道1比较输出模式选择,当定时器值等于T3CC1中的比较值时输出脚的操作:
000:
发生比较时输出端置1
001:
发生比较时输出端置0
010:
发生比较时输出端翻转
011:
上升沿比较输出设置,0清除
100:
上升沿比较输出清除,0设置
101:
发生比较时输出端置1,0XFF清除
110:
发生比较时输出端置0,0X00设置
111:
初始化输出引脚,CMP[2:
0]不改变。
2
MODE
0
R/W
定时器3通道1模式选择
0:
捕获模式
1:
比较模式
1:
0
CAP[1:
0]
00
R/W
捕获模式选择
00:
无捕获
01:
上升边沿捕获
10:
下降边沿捕获
11:
所有边沿捕获
T4CCTL0
7
--
0
R0
没使用
6
IM
1
R/W
通道0中断掩码
0:
禁止中断
1:
使能中断
5:
3
CMP[2:
0]
000
R/W
通道0比较输出模式选择,当定时器值等于T4CC0中的比较值时输出脚的操作:
000:
发生比较时输出端置1
001:
发生比较时输出端置0
010:
发生比较时输出端翻转
011:
上升沿比较输出设置,0清除
100:
上升沿比较输出清除,0设置
101:
发生比较时输出端置1,0XFF清除
110:
发生比较时输出端置0,0X00设置
111:
初始化输出引脚,CMP[2:
0]不改变。
2
MODE
0
R/W
定时器4通道0模式选择
0:
捕获模式
1:
比较模式
1:
0
CAP[1:
0]
00
R/W
捕获模式选择
00:
无捕获
01:
上升边沿捕获
10:
下降边沿捕获
11:
所有边沿捕获
T4CCTL1
7
--
0
R0
没使用
6
IM
1
R/W
通道1中断掩码
0:
禁止中断
1:
使能中断
5:
3
CMP[2:
0]
000
R/W
通道1比较输出模式选择,当定时器值等于T4CC1中的比较值时输出脚的操作:
000:
发生比较时输出端置1
001:
发生比较时输出端置0
010:
发生比较时输出端翻转
011:
上升沿比较输出设置,0清除
100:
上升沿比较输出清除,0设置
101:
发生比较时输出端置1,0XFF清除
110:
发生比较时输出端置0,0X00设置
111:
初始化输出引脚,CMP[2:
0]不改变。
2
MODE
0
R/W
定时器4通道1模式选择
0:
捕获模式
1:
比较模式
1:
0
CAP[1:
0]
00
R/W
捕获模式选择
00:
无捕获
01:
上升边沿捕获
10:
下降边沿捕获
11:
所有边沿捕获
TmCCn定时器3/4通道0/1捕获/比较值
端口
Bit位
名称
初始化
读/写
描述
T3CC0
7:
0
VAL[7:
0]
0X00
R/W
定时器3通道0捕获/比较值。
T3CC1
7:
0
VAL[7:
0]
0X00
R/W
定时器3通道1捕获/比较值。
T4CC0
7:
0
VAL[7:
0]
0X00
R/W
定时器4通道0捕获/比较值。
T4CC1
7:
0
VAL[7:
0]
0X00
R/W
定时器4通道1捕获/比较值。
TIMIF:
定时器1/3/4中断屏蔽/标志
端口
Bit位
名称
初始化
读/写
描述
TIMIF
7
---
0
R0
未使用
6
OVFIM
1
R/W
定时器1溢出中断屏蔽
5
T4CH1IF
0
R/W0
定时器4通道1中断标志
0:
无中断未决
1:
中断未决
4
T4CH0IF
0
R/W0
定时器4通道0中断标志
0:
无中断未决
1:
中断未决
3
T4OVFIF
0
R/W0
定时器4溢出中断标志
0:
无中断未决
1:
中断未决
2
T3CH1IF
0
R/W0
定时器3通道1中断标志
0:
无中断未决
1:
中断未决
1
T3CH0IF
0
R/W0
定时器3通道0中断标志
0:
无中断未决
1:
中断未决
0
T3OVFIF
0
R/W0
定时器3溢出中断标志
0:
无中断未决
1:
中断未决