历史上的今天
今天是:2025年06月22日(星期日)
2018年06月22日 | PIC单片机入门_定时器TMR2详解与实例
2018-06-22 来源:eefocus
1.前言
这里将介绍另一款定时器TMR2模块,TMR2与前面介绍的TMR0和TMR1相比,最大的差别是只能工作于定时模式,因此称它为“定时器TMR2”。
2.TMR2的特性
TMR2为8位宽,附带二个4位宽的分频器:一个“预分频器”和一个“后分频器”,一个可编程的8位周期寄存器PR2。其主要用途:
1. 可以用作时间定时器,但是不能作为计数器;
2. 可以为同步串行端口MSSP模块提供波特率时钟;
3. 可以与CCP模块配合使用,实现脉宽调制PWM功能。TMR2的核心是一个可以由软件读/写的8位宽的计数器,它也是按递增计数,从某一初值(缺省为0)开始递增,直到与周期寄存器PR2中内容匹配之后,在下一次递增时则返回到00H,并且会产生匹配信号,该匹配信号将作为“后分频器”的计数脉冲。
只有在后分频器产生溢出时,才会将溢出中断标志位TMR2IF(PIR1的bit1)置1。如果此时相关的中断使能位都置位,则会引起CPU的中断响应。通过对中断使能位TMR2IE的置位或复位,即可允许或禁止CPU响应TMR2产生的中断请求。需要注意的是:
1. TMR2和RAM空间统一编址,地址为11H;
2. 可用软件方式直接读/写TMR2的内容;
3. 有一个4位的预分频器和一个4位的后分频器;
4. 有一个8位周期寄存器;
5. 累加计数的触发信号只能选择内部系统时钟;
3. TMR2相关的寄存器
与TMR2有关的寄存器共有6个,如下表所示。这6个寄存器中的前3个寄存器的功能可以查看“中断系统”。在此介绍TMR2控制寄存器T2CON。
TMR2控制寄存器T2CON是一个只用到低7位的可读/写寄存器,最高位未用,其余各位的含义如下:
1. TOUT-PS3~TOUT-PS0:TMR2后分频器分频比选择位,如下表所列:
2. TMR2-ON:TMR2使能控制位。1=启用TMR2;0=关闭TMR2,可以降低功耗。
3. T2CK-PS1~T2CK-PS0:预分频器分频比选择位,如下表所列:
4. TMR2的电路结构
TMR2的内部结构,如下图所示,包含5个组成部分。下面分析各个部分的功能和组成关系。
核心部分就是一个8位宽的累加计数器TMR2。其复位值是00H,也可以是在00H~FFH范围内由用户设定的一个起始值。
4位宽的预分频器,对于进入TMR2的时钟信号进行预先分频,允许选择3种不同的分频比(1:1、1:4或1:16)。
注意:在对TMR2或控制寄存器进行写操作时,都可以使预分频器清0;在用任何方式复位时,都会对预分频器清0。周期寄存器PR2也是一个8位可读/写寄存器。用来预置一个作为TMR2一次计数过程结束的周期值。芯片复位后PR2寄存器被自动设置为全1(FFH)。
比较器是一个8位宽的按位比较逻辑电路,只有当参加比较的两组数据完全相同之后,下一次递增时,“匹配”输出端才会送出高电平,其他情况下该输出端均保持低电平。
4位宽的后分频器,对于比较器的输出信号进行后续分频,允许连续选择16种分频比,其输出信号频率是输入信号频率的1/N (N=1~16) 。
TMR2的工作是可控的,所以还包含一个控制门G1。只有当TMR2使能位TMR2ON置1,系统时钟才能通过G1,TMR2也才能进入活动状态。
5.TMR2的工作原理
TMR2只有一种工作方式:定时器方式,其触发钟信号也只能从内部系统时钟4分频后得到。
5.1 禁止TMR2工作
TMR2也比TMR0多了一种选择,即可以被用户程序关闭而节电,此点类似于TMR1。具体方法是将TMR2使能控制位TMR2ON清0。此时与门G1的一只引脚被低电平封锁,其输出端均保持低电平;因此使得累加计数器TMR2不能活动。
5.2 定时工作方式
TMR2只有定时工作模式,该模式可以被用来实现一般的延时或定时。但是,TMR2的主要目的并不是把它用作普通的定时器,而是为CCP模块或MSSP模块提供周期可调的时基信号。
用作周期可调的时基发生器
当TMR2被用作周期可调的时基发生器时,可以为CCP模块或MSSP模块提供周期可调的时基信号。
这时,应该将中断使能位TMR2IE清0,即屏蔽TMR2的中断功能,相当于把后分频器的作用也屏蔽了;通过对周期寄存器PR2设置不同的值,以及给预分频器设定不同的分频比,来灵活调整TMR2输出端的信号周期TTMR2 。该周期的计算式为:
TTMR2=(4/fosc)*N1*(PR2+1)
其中:fosc为系统时钟频率;N1为预分频器的分频比(取1、4或16);PR2为周期寄存器预赋值;PR2+1是因为在TMR2与PR2匹配后的下一次增量时TMR2才回00H。
用作延迟时间可调周期性定时器
把TMR2作为延迟时间可调的周期性定时器,会比TMR0的定时方式更加节省软件开销。
TMR2不必像TMR0那样,每次溢出后,都要给寄存器TMR2赋初值。只要一次性设定溢出周期(通过设定预分频器、后分频器以及PR2来实现),TMR2就将会周期性地按预先设定的溢出周期产生超时中断。该超时溢出周期的计算式为 :TTMR2IF=(4/fosc)*N1*(PR2+1)*N2
其中,N2为后分频器的分频比(连续可取1~16)。这时的简化电路如下图所示:
![]()
用作普通定时器
TMR2也可以像TMR0那样用作普通的定时器,这样使用时,可以将后分频器的分频比设定为1:1,PR2的值设定为最大值FFH,就相当于把后分频器、周期寄存器以及比较器的功能禁止掉了,使得它们不发挥作用。从而使TMR2简化为类似于TMR0一样,带有一个分频比可设定为1:1、1:4或1:16的4位预分频器。这时超时溢出周期的计算式为:
TTMR2IF=(4/fosc)*N1*(256-M)
其中,M为TMR2的初始值。简化电路如下图所示:
采用这种用法时,需要在TMR2每次超时溢出时,都要给TMR2赋一次初始值。累加计数寄存器TMR2,就会以该初始值为起点开始增量,直到递增到FFH,之后再出现一个计数脉冲,就会将TMR2复位清0,并且发出中断请求(TMR2IF被置1)。如果想把预分频器的功能禁止掉,可以把它的分频比也设置为1:1,这样就相当于把预分频器给短路掉了。
史海拾趣
|
向各位硬件高手咨询个问题-我的电脑开机后是四个屏幕,从系统启动到进入到登陆阶段都是黑屏,请问什么原因? 是华硕的笔记本,A6系列的,昨天开始就这样,我的电脑开机后是四个屏幕,从系统启动到进入到登陆阶段都是黑屏,可能能进bios,但一直是黑屏,什么也看不见,连重装系统都不能了?郁闷,希望来解答,谢谢… 查看全部问答> |
|
最近在工作中常常需要用到Makefile来编译和链接arm程序,但是现在我还是无法脱离集成开发环境,希望高手指点指点, 以下是我找到的一个比较经典的make,但是还没有完全将它的意思弄清楚,希望高手指点 #Makefile文件涉及的语法众 ...… 查看全部问答> |
|
在网上找到一篇“5分钟用STM32的内置Flash做一个超小U盘” 用他提供的方法不行。请问各位高手 STM32 内置 FLASH 可以做 U 盘吗?… 查看全部问答> |
|
今天对STM32F207和103做了一下对比,想做一个STM32F207与 103兼容设计,都是144Pin的,画PCB真的很烦呀!搞一次,最好两个都能兼容上!对比如下 管脚 STM32F207 STM32F103 30 Vdd_12&nbs ...… 查看全部问答> |
|
来论坛不久 ,偶然发现论坛做的很好(专家多、讨论多、DIY活动多、还有给力的团购) ,这里的氛围不错,一直待在群里,不过群里依然有着eeworld爱分享,乐于助人的氛围 。想学习一下 Cortex-M3处理器,做一个身边有需求的应用,最想改造我的空 ...… 查看全部问答> |
|
直按式非可视门铃主机里面所用到的324D与电源板上的324N可否对换?它们有什么样的区别?各位大虾给点意见,按分机的时候没反应是那个出问题了?… 查看全部问答> |









