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

2019-07-15 16:18发布

#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左右,请高手指点我哪里理解错了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
shimx
1楼-- · 2019-07-15 20:09


MC_2是Continuous mode,MC_1才是上升模式
jiaxw
2楼-- · 2019-07-15 21:03

嗯,最好DCO用内部校准的1Mhz,默认的不准的。
jiahy
3楼-- · 2019-07-15 23:39
 精彩回答 2  元偷偷看……
spark周
4楼-- · 2019-07-16 00:48
基准频率算错了  呵呵   自己需要仔细  呵呵
jiahy
5楼-- · 2019-07-16 05:28

嗯,我了解啦

一周热门 更多>