Timer_A 延遲時間問題

2019-03-24 11:57发布

void TimerInit(void)
{
  BCSCTL1 = CALBC1_8MHZ;
  DCOCTL =  CALDCO_8MHZ;
  CCR0 = 1000;
  TACTL = TASSEL_1 + MC_1 + TACLR;    // ACLK, upmode  
  while (TAR != countCycle);
}

請問我Timer_A選用ACLK作為時鐘源,以上述函式來說
執行到1000次所需的時間是:
1000*(1/32768)嘛?
但我實際計時卻是17秒左右...
請各位幫忙謝謝! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
back2001
2019-03-25 06:12
#include  <msp430x24x.h>

void TimerInit(int countCycle);

void main(void)
{   
  WDTCTL = WDTPW + WDTHOLD;                           // Stop WDT
  if (CALBC1_8MHZ == 0xFF || CALDCO_8MHZ == 0xFF)     // If calibration constants erased                                 
    while(1);                                         // do not load, trap CPU!!         
  
  BCSCTL1 = CALBC1_8MHZ;                              
  DCOCTL = CALDCO_8MHZ;
  P1DIR |= 0x01;   
  while (1)
  {
    TimerInit(1000);
    P1OUT ^= 0x01;  
  }
}

void TimerInit(int countCycle)
{
  CCR0 = countCycle;
  TACTL = TASSEL_1 + MC_1 + TACLR;    // ACLK, upmode  
  while (TAR != countCycle);
}

我有觀看TAR的值有到1000,LED才會轉態一次

一周热门 更多>

相关问题

    相关文章