打印

MSP430的 定时器问题

[复制链接]
1350|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雨落沉轩|  楼主 | 2012-12-10 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include "msp430g2553.h"

int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR |= BIT0;
  CCTL0 = CCIE;      //开定时器中断
  CCR0 = 50000;      //计数值
  TACTL = TASSEL_2+ ID_3 + MC_2;    //选择SMCLK时钟系统、8分频、上升模式,计数到CCR0
  //TACTL = TASSEL_1 + MC_2;


  _BIS_SR(LPM0_bits + GIE);
  //return 0;
}

#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
  P1OUT ^= BIT0;
}


这是我的定时器函数,其中系统时钟没有配置,默认DCO应该是800KHz,定时器选择SMCLK时钟系统、8分频、上升模式,计数到50000,计算中断的时间:

1/(8*100000)*8*50000= 0.5s

算出的中断时间好像应该为0.5S,可是我实际测试确实1S左右,请高手指点我哪里理解错了。

相关帖子

沙发
永远的不知| | 2012-12-10 22:01 | 只看该作者
MC_2是Continuous mode,MC_1才是上升模式,另外,最好DCO用内部校准的1Mhz,默认的不准的。

使用特权

评论回复
板凳
雨落沉轩|  楼主 | 2012-12-10 22:41 | 只看该作者
谢谢,我也发现了,改为MC_1后,加上DCO默认大概为1MHz的话,就差不多了。

使用特权

评论回复
地板
readygo2012| | 2012-12-10 23:32 | 只看该作者
原来在编程时,时间也没这样留心过,受教了

使用特权

评论回复
5
hawksabre| | 2012-12-13 18:19 | 只看该作者
基准频率算错了  呵呵   自己需要仔细  呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

250

帖子

0

粉丝