打印

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

[复制链接]
1043|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
someonewho|  楼主 | 2014-8-28 22:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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 | 只看该作者
理解固定程序写法很重要啊

使用特权

评论回复
5
someontime| | 2014-8-28 23:57 | 只看该作者
各位有例程吗

使用特权

评论回复
6
haidixibahe| | 2014-8-29 08:02 | 只看该作者
原来是这个样子啊

使用特权

评论回复
7
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

粉丝