码迷,mamicode.com
首页 > 其他好文 > 详细

(9)MSP430F5529 定时器Timer_A

时间:2015-03-22 10:34:41      阅读:1536      评论:0      收藏:0      [点我收藏+]

标签:

  MSP430F5529共有两类共4个定时器,分别是Timer_A定时器3个和Timer_B定时器1,按照每个寄存器配备的捕获/比较器的个数分别命名为Timer0_A(内有5个捕获比较器)、Timer1_A3个)、Timer2_A3个)、Timer0_B7个)。

   这一章,我们讲定时器Timer0_A.A类的都一样)

  注意:下面所提到的所有寄存器,在TA后面插入012就分别表示Timer0_ATimer1_ATimer2_A(我这里省略了数字)

6.1 简介一下

          定时器A是一个复合了捕获/比较寄存器的十六位的定时(加减)计数器。定时器A支持多重捕获/比较,PWM输出和内部定时,具有扩展中断功能,中断可以由定时器溢出产生或由捕获/比较寄存器产生

    特征简介:

       四种运行模式的异步16位定时/计数器

    ○自身时钟源可选择配置  

    ○最多达5个可配置的捕获/比较寄存器(CCR

    ○可配置的PWM输出  

    ○异步输入和输出锁存  

    ○对所有Timer_A中断快速响应的中断向量寄存器     

6.2 TATimer_A)的几个基本操作设置(含寄存器介绍及设置)

                 声明:所有寄存器同样支持字和字节操作,不要忘记这是什么意思

                                所有寄存器初始化都为0x0000

6.2.1 TA控制寄存器TACTL最常用最基本

              再次说明一下例如:TA0CTLTA1CTLTA2CTL分别表示3个不同定时器A的控制寄存器 rw-(0)表示默认读写均为0 

     TASSELx :时钟源选择。尽量不要选TASSEL0-TACLK外部时钟源,因为如果TACLKCPU时钟不同步,很容易出问题。(TA0CLKP1.0引脚)

   00 TACLK   01 ACLK   10 SMCLK  11  ~TACLK

      IDx第一次分频控制。ID0-1分频;ID1-2分频;ID2-4分频;ID3-8分频

             MC:工作模式控制。(建议在修改定时器运行模式前先停止定时器(中断使能、中断标志、TACLR例外),以避免产生未知的误操作。)

     00 停止模式:定时器停止   01 增模式: 定时器计数到TACCR0   10 连续模式,定时器计数到0FFFH   11增减模式:定时器加计数到TACCR0然后减计数到0000H 

    TACLR:定时器清零位。该位置位会复位TA寄存器,时钟分频和计数方向。TACLR位会自动复位并置0

    TAIE定时器中断使能  0:中断禁止 1:中断允许

   TAIFG中断标志位 0:没有中断发生 1:有中断挂起

 6.2.2  计数值存放寄存器TAR

                 显然,最大存放计数值为0xFFFFh

    ②(类似51单片机)可以被用来存放一个初值,然后选用连续模式。这样不断计满再手动填充,从而达到精确计时的效果;

      ③默认为0,且对该寄存器可以直接赋值;

 6.2.3  扩展寄存器TAEX0

                 很简单,这个寄存器就是为了控制时钟源的二次分频(看结构图)。

                 该寄存器的低3为定义为TAIDEX000-111分别表示1-8分频

 6.2.4 捕获/比较寄存器TACCR0-TACCR45个)

                 比较模式下,用来设定计数终值;

    捕获模式下用来将捕获的TAR值存放进TACCRx中。

 6.3  MC控制的四种工作模式的详细讲解

   6.3.1 MC=0停止模式

                这是系统默认的模式,定时计数器禁止工作。

    6.3.2 MC=1增模式    总结几句话:(红色标记的很重要)

     ①此模式下严禁从0xffff开始计数;

     ②注意从0计到TACCR0,实际上记了TACCR0+1个数;

     ③计到TACCR0后,会回到0重新开始计数;

   ④如果TAR的值大于TACCR0,这时候会立即从0开始计数;

     ⑤当定时器计数到TACCR0的值时,中断标志CCIFG位(之后会讲到)置位。当定时器由TACCR0返回0时,TAIFG中断标志置位;

     ⑥在定时器运行时修改TACCR0,如果新的周期值大于或等于旧的周期值,或大于当前的定时器计数值,那么定时器立刻开始执行新周期计数。如果新周期小于当前的计数值,那么定时器回到0。但是,在回到0之前会多一个额外的计数。

  6.3.3 MC=2连续模式

                在连续模式中,定时器重复计数到0FFFFH,然后重新从0开始增计数(除非每次重装计数初值)。当定时器从0FFFFH0时,TAIFG中断标志置位。

               应用:连续模式下利用捕获/比较器产生需要的时间间隔。原理是:计数在一直进行,捕获器TACCRX中存有第一个计数终值,每次捕获器计到TACCRX时,会产生中断标志,我们可以在中断服务函数中写入一个计算好的下一个的计数终值,这样无限计算和中断下去,那么该捕获器就会产生一个稳定的时间间隔序列。(其实吧,不明白也没关系。就算明白了,也不好用,因为计算起来很麻烦而且也不好用)

  6.3.4 MC=3增减模式(常用于生成PWM波)

                 该模式下,计数方向是固定的,即让定时器停止后再重新启动定时器,它就沿着停止时的计数方向和数值开始计数。如果不希望这样,就需要将TACLR置位来清除方向。TACLR位也会清除TAR的值和定时器的时钟分频。

                 此模式下置位情况如下图:

      当定时器运行时,改变TACCR0的值,如果正处于减计数的情况,定时器会继续减到0,新的周期在减到0后开始。 如果正处于增计数状态,新周期大于等于原来的周期,或比当前计数值要大,定时器会增计数到新的周期;如果新周期小于原来的周期,定时器立刻开始减计数,但是,在定时器开始减计数之前会多计一个数。

文章摘录于:http://blog.lehu.shu.edu.cn/879836630/A449667.html

(9)MSP430F5529 定时器Timer_A

标签:

原文地址:http://www.cnblogs.com/qingfengshuimu/p/4356753.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!