打印

应该为0.5S,实际测试确实1S左右

[复制链接]
381|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiahy|  楼主 | 2017-9-22 23:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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左右,请高手指点我哪里理解错了。

相关帖子

沙发
shimx| | 2017-9-22 23:38 | 只看该作者


MC_2是Continuous mode,MC_1才是上升模式

使用特权

评论回复
板凳
jiaxw| | 2017-9-22 23:40 | 只看该作者

嗯,最好DCO用内部校准的1Mhz,默认的不准的。

使用特权

评论回复
地板
jiahy|  楼主 | 2017-9-22 23:41 | 只看该作者

谢谢,我也发现了,改为MC_1后,加上DCO默认大概为1MHz的话,就差不多了。

使用特权

评论回复
5
spark周| | 2017-9-22 23:43 | 只看该作者
基准频率算错了  呵呵   自己需要仔细  呵呵

使用特权

评论回复
6
jiahy|  楼主 | 2017-9-22 23:46 | 只看该作者

嗯,我了解啦

使用特权

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

本版积分规则

862

主题

9861

帖子

4

粉丝