MSP430定时器A的计数模式的简单介绍(会中文就能看懂)

  • Post author:
  • Post category:其他


首先明白一个概念:

定时器A == Timer_A == TA

之后的大部分定时器内容如TACCR0,TACTL等,都指的是定时器A的寄存器

然后,TIMER_A有四种计数模式,下面将一一解释

(为了方便理解,模式顺序与中文手册有些许不同,请谅解)


目录


一、停止模式


二、连续计数模式


三、增计数模式


四、 增减计数模式

一、停止模式

直白点就是个暂停,定时器A之前工作于什么模式,进入停止模式后只是计数暂停了,退出这个模式后会继续按照之前的工作模式工作,举个例子,你要从1数到100,数到50时暂停(进入停止模式),计数在50保持不变,然后继续(退出停止模式),你就继续按照之前的计划数数,从50再开始数。没什么特别的,用到的场景也不多。

二、连续计数模式

此模式是增计数模式的一种,即从0数到0XFFFF(65535),然后数到0XFFFF后,重新归零,再进行计数

ea35586fb5c947c2ab26b977b6961773.png

在这个模式里面,我们需要认识一个置位标志:TAIFG

这个标志在计数到0XFFFF后重置到0的过程中会产生。

cd557e9287664d33b7b726b6170e1cab.png

如图,可以看见,0XFFFF->0时,TAIFG置位(变1),所以

这个标志位可以用来告诉你已经计数65535了

,比如说,循环检测TAIFG的值,如果检测到了TAIFG的值变1,就进行巴拉巴拉之类的操作。

三、增计数模式

dcffc87538434d8cb9adad69cebfc004.png

增计数可以说是定时器A四种计数模式中最重要的一种了,它与上文所说的连续计数很相像,唯一的区别是连续计数会计数到65535,而增计数模式会计数到CCR0,而CCR0的值是可以自己设定的,要注意的是CCR0必须要小于65535。

当计数值等于TACCR0(或者大于的时候),定时器计数复位并重新从零开始计数。

97e27c9fba20493f8d6c89b31fc59ef8.png

与连续计数模式不同,增计数有两个标志位,分别是TAIFG与CCIFG。他们的置位操作并不相同。图中很明确说明了TAIFG与CCIFG的置位条件,这里就不多费笔墨了。

需要注意的一点是,TAIFG置位指的是从0数到CCR0(CCR0是你自己设置的数),这时候的实际计数次数是CCR0+1次,如CCR0=3999,那么计数4000次是TAIFG才会置位。同样的,CCIFG是数3999次置位(0–CCR0-1)。

下面是一些关于重置计数周期的相关说明:(所以为什么不直接设置其他定时器的增计数呢?)

9456d9b167664522b8838ec800831efd.png

四、 增减计数模式

此模式与三中讲的增计数很相似,唯一的区别就是数到CCRO会往下数而不是置0

e735c9fa552b4f89862af126852c9fa2.png

置位如下:

718cbd4c644144ef8255d1bc52a759eb.png

以上就是全部的内容了,可能看起来很简单(实际上就是很简单),看明白了就会了,当然,对初学者可能有些难以理解,建议多看些相关的文章,想明白了你就会发现这其实很简单。

最后,本文如有错误欢迎指正。

参考文献:《MSP430中文手册(参考版)》

—真的是参考版,内容不能说乱吧,只能说是一塌糊涂



版权声明:本文为ZeroZeroNine原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。