您的位置 首页 知识

Msp430定时器的介绍及其根本使用

Msp430定时器的介绍及其基本应用Msp430单片机一共有5种类型的定时器。看门狗定时器(WDT)、基本定时器(BasicTimer1)、8位定时器计数

Msp430守时器的介绍及其根本运用

Msp430单片机总共有5种类型的守时器。

看门狗守时器(WDT)、根本守时器(Basic Timer1)、8位守时器/计数器(8-bit Timer/Counter)、守时器A(Timer_A)和守时器B(Timer_B)。可是这些模块不是一切msp430类型都具有的功用。

1、看门狗守时器(WDT)

学过电子的人或许都知道,看门狗的首要功用便是当程序发生毛病时能使受控体系从头启动。

msp430中它是一个16位的守时器,有看门狗和守时器两种形式。

2、根本守时器(Basic Timer1)

根本守时器是msp430x3xx和msp430F4xx系列器材中的模块,通常向其他外围供给低频操控信号。它能够只两个8位守时器,也能够是一个16位守时器。

3、8位守时器/计数器(8-bit Timer/Counter)

如其姓名所示,它是8位的守时器,首要运用在支撑串行通讯或数据交换,脉冲计数或累加以及守时器运用。

4、16位守时器A和B

守时器A在一切msp430系列单片机中都有,而守时器B在msp430f13x/14x和msp430f43x/44x等器材中呈现,根本的结构和守时器A是相同的,由于自己最早了解并运用的是守时器A所以在这里就首要谈一下自己对守时器A的了解和运用。

守时器A是16位守时器,有4种作业形式,时钟源可选,一般都会有3个可装备输入端的比较/捕获寄存器,而且有8种输出形式。经过8种输出形式很简单完成PWM波。

守时器A的硬件电路大致可分为2类功用模块:

一:计数器TAR

计数器TAR是主体,它是一个敞开和封闭的守时器,假如敞开它便是一直在循环计数,只会有一个溢出中止,也便是当计数由0xffff到0时会发生一个中止TAIFG。

二:比较/捕获寄存器CCRX

怎么完成守时功用呢?这就要靠三个比较/捕获寄存器了(以后用CCRx表明)。

当计数器TAR的计数值等于CCRx时(这便是捕获/比较中的比较的意思:比较TAR是否等于CCRx),CCRx单元会发生一个中止。根据中止即可得到相应的守时时刻了。

这样咱们能够经过守时器A得到三个守时时刻了。

一:程序示例

我先给出我的一个运用程序,然后经过程序来书名守时器A的根本用法。程序如下:

void init_TimerA ( void )
{
CCTL0 = CCIE; //1:敞开比较器0中止
CCR0 = 32768; // 2:守时时刻的选取

其为1S秒守时:由于挑选的是ACLK,UpMode,所以TAR每添加1次的时刻为1/32768s,总共添加32768次,所认为1s
CCTL1 = CCIE; // 敞开比较器1中止
CCR1 = 100; // 3.66mS显现推迟
TACTL = TASSEL_1 + MC_1; //3:挑选时钟源和计数模

时钟源为ACLK而且为增计数形式

LPM3; //进入低功耗3
}

#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A0(void)
{

//用户代码 TACCR0
}

#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A1 ( void )
{
switch( TAIV )
{
case 2: //用户代码 break; // TACCR1

case 4://用户代码 break; // TACCR2

case 10://用户代码 break; //TAIFG
}

//根据需求是否要退出低功耗形式
LPM3_EXIT; // 退出低功耗
}

二:程序剖析

1):看程序中的守时器初始化模块。

1:CCTL0 = CCIE;

CCTLx是相应比较/捕获寄存器的操控寄存器,它可对比较/捕获寄存器进行设置。

这句子的意思是:敞开了CCR0的中止使能,当计数器TAR计数到CCR0时发生中止。

2:CCR0 = 32768;

CCRx便是相应比较器的值。

其为1S秒守时:由于挑选的是ACLK,UpMode,所以TAR每添加1次的时刻为1/32768s,总共添加32768次,所认为1s守时。

3:TACTL = TASSEL_1 + MC_1;

TACTL是计数器的操控寄存器。

TASSEL_x是时钟源的挑选。

0——TACLK,运用外部引脚信号作为输入

1——ACLK,辅佐时钟

2——MCLK,体系主时钟

3——INCLK,外部输入时钟

MC_x是挑选TAR的作业形式挑选位。对TACTL进行形式设置的一起也敞开了守时器,要中止只需把MC_0赋值给TACTL就能够。

0——中止形式,用于守时器的暂停

1——增计数形式,计数器计数到CCR0,再清零计数

2——接连计数形式,计数器增计数到0xffff,再清零计数

3——增/减计数形式,增计数到CCR0,再减计数到0

所以这个计数器作业在UP形式,时钟源为ACLK。

2):看程序中的守时器中止模块。

在UP或许UP/DOWN形式时,经过改动CCR0的值能够改动计数器TAR的最大计数值,也便是当计数器计数到CCR0的值时主动会将计数器清零。由于CCR0比较特别,所以CCRO0的中止向量与CCR1,CCR2,TA所共有的中止向量不同。

CCR0的中止很简单只需在函数中加上自己的中止相应程序就行。可是CCR1和CCR2是共用一个中止函数的,所这就需求辨认到底是哪个中止,这能够经过一个寄存器TAIV来辨认,

2——比较/捕获寄存器1中止

4——比较/捕获寄存器2中止

10——守时器溢出

0——没有中止

三:留意事项

需求留意的是在增计数形式时CCR1和CCR2的值应该小于CCR0,不然CCR1和CCR2不会发生中止。

而且每次CCR1和CCR2中止后要把它们从头赋值这样才干确保CCR1和CCR2的中止间隔时刻不变。

相似句子如下:

CCR1 += 100;
if ( CCR1 >= 32768 )
CCR1 -= 32768;

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/262512.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部