| 剛剛開始學習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燈很暗,不知道什么原因。希望各位多多指教,解答小弟心中的疑惑。 |
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |