This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430G2332无法进入定时器中断

Other Parts Discussed in Thread: MSP430G2332

#include "io430.h"
#include "io430g2332.h"

void main(void)
{
unsigned long Delay=0;
Clock_Config();
IO_Config();
IO_State_Init();
TIMER_Config();
while(1)
{}

}

#pragma vector = TIMER0_A1_VECTOR
__interrupt void Timer_A (void)
{}

void Clock_Config(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
DCOCTL = DCO1+DCO0;
BCSCTL1 = XT2OFF+RSEL3;
BCSCTL2 = 0;
}

void TIMER_Config(void)
{
TACTL |= TASSEL_2+ID_0+MC_1+TAIE; //时钟选择SMCLK,不分频,增计数模式,使能中断
//CCTL0 = CCIE; //使能CCR0中断
//CCR0 = 2047; //设定周期0.5S
CCR0 = TIME;
TAR = TIME;


CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 500;
}

程序设置基本就是这样,#pragma vector = TIMER0_A1_VECTOR或者TIMER0_A0_VECTOR都不能进入中断,没用过msp430,不知道如何配置;还有那个全局中断IE1里面,好像没有和定时器有关的位吧?希望能得到尽快解决,最好有MSP430G2332的初始化配置程序可以学习下。本人QQ12697909。希望有技术支持帮忙解决。

  • 请参考下面能进Timer0 A1中断的例子:

    //******************************************************************************
    //  MSP430G2xx2 Demo - Timer_A, Toggle P1.0, CCR1 Cont. Mode ISR, DCO SMCLK
    //
    //  Description: Toggle P1.0 using software and TA_1 ISR. Toggles every
    //  50000 SMCLK cycles. SMCLK provides clock source for TACLK.
    //  During the TA_1 ISR, P1.0 is toggled and 50000 clock cycles are added to
    //  CCR0. TA_1 ISR is triggered every 50000 cycles. CPU is normally off and
    //  used only during TA_ISR. Proper use of the TA0IV interrupt vector generator
    //  is demonstrated.
    //  ACLK = n/a, MCLK = SMCLK = TACLK = default DCO
    //
    int main(void)
    {
      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
      P1DIR |= 0x01;                            // P1.0 output
      CCTL1 = CCIE;                             // CCR1 interrupt enabled
      CCR1 = 50000;
      TACTL = TASSEL_2 + MC_2;                  // SMCLK, Contmode
    
      _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
    }
    
    // Timer_A3 Interrupt Vector (TA0IV) handler
    #pragma vector=TIMER0_A1_VECTOR
    __interrupt void Timer_A(void)
    {
      switch( TA0IV )
      {
      case  2:                                  // CCR1
        {
        P1OUT ^= 0x01;                          // Toggle P1.0
        CCR1 += 50000;                          // Add Offset to CCR1
        }
               break;
      case  4: break;                           // CCR2 not used
      case 10: break;                           // overflow not used
     }
    }