剛剛開始學習msp430g2553,板子是launchpad,今天嘗試著寫了一個定時器的程序,程序的功能是利用Timer_A定時一秒使LED燈閃爍,程序如下#include <msp430g2553.h>
void main(void)
{
WDTCTL=WDTPW+WDTHOLD; //關閉看門狗
BCSCTL1|=DIVA_0;
BCSCTL3|=LFXT1S_0;
P1DIR|=BIT0; //設置P1.0為輸出管腳。
P1OUT&=~BIT0;
TACTL|=TASSEL_1+ID_0+MC_1; //選擇ACLK為時鐘源,0分頻,計數器清零,增計數器模式。
TACTL&=~TAIFG; //清中斷標志位
TACCTL0|=CCIE;
TACCR0=32768-1; //定時器計數寄存器初值,定時時間為1秒,初值是32767而不是32768切記
//TACTL|=TAIE; //運行TA溢出中斷
_EINT(); //允許總中斷
while(1);
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TA_ISR(void)
{
P1OUT^=BIT0;
}
這個程序工作是正常的,但是在調試過程中發現了幾個問題,問題一:如果不加 TACCTL0|=CCIE;只有TACTL|=TAIE; 則進不去中斷,難道定時器的溢出不能產生中斷嗎?問題二:如果TACCTL0|=CCIE;TACTL|=TAIE; 同時存在則LED燈很暗,不知道什么原因。希望各位多多指教,解答小弟心中的疑惑。
|
|