定时器连续模式的定时时间多长

[复制链接]
1274|6
 楼主| someonewho 发表于 2014-8-28 22:15 | 显示全部楼层 |阅读模式
430连续模式下,计数器周期从0H到0FFFFH。可是为什么有的程序中,使用的是连续模式,但是也给CCR0设定了一个值,然后进入中断的时候CCR0又加一下这个值呢?
 楼主| someonewho 发表于 2014-8-28 22:16 | 显示全部楼层
求助大家了
justbybing 发表于 2014-8-28 22:44 | 显示全部楼层

这么说吧,从0计数到CCR0产生一个中断,然后定时器继续跑,如果你希望计数周期是65536,那么就不用管它,65536个周期后定时器会再次计数到CCR0,再产生中断。
但是,实际情况下很多时候我们是希望定时器实现周期为CCR0的周期性定时。因此需要将CCR0加上一个常数变成CCR0',如果超过65535则溢出,相当于对65536取余数。
这样一来,从第一次产生中断开始,再过常数个周期,定时器计数达到CCR0',将再次产生中断。从而实现周期为常数的定时中断。
specialfrin 发表于 2014-8-28 23:43 | 显示全部楼层
理解固定程序写法很重要啊
someontime 发表于 2014-8-28 23:57 | 显示全部楼层
各位有例程吗
haidixibahe 发表于 2014-8-29 08:02 | 显示全部楼层
原来是这个样子啊
zijingzelan001 发表于 2014-9-4 14:35 | 显示全部楼层
#include  <msp430x42x.h>

/****************主函数****************/
void main(void)
{  
    /*下面程序关闭P1P2所有的IO口*/
    P1DIR = 0XFF;P1OUT = 0XFF;
    P2DIR = 0XFF;P2OUT = 0XFF;
    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗
    CCTL0 = CCIE;                   //使能CCR0中断
    CCR0 = 4096;                   //设定周期0.5S               
    TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式,8分频
    P2DIR = 0x03;                   //设置P2口方向为输出
    P2OUT = 0x03;

    _EINT();                        //使能全局中断
    LPM3;                           //CPU进入LPM3模式
}

/*******************************************
函数名称:Timer_A
功    能:定时器A的中断服务函数
参    数:无
返回值  :无
********************************************/
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{  
    P2OUT ^= 0x03;                  //P2口输出取反
   
}
  
简单的例程,p2.3口的led闪烁
您需要登录后才可以回帖 登录 | 注册

本版积分规则

97

主题

1150

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部