遇到关于MSP430 TimerB 中断的问题

问题遇到的现象和发生背景

在学习msp430fr2311 MCU时遇到如下现象
把TimerB的初始化注释掉,其他功能变正常。有TimerB的初始化,则全不正常,不过能看出端口的初始化确实正常。

问题相关代码

#include <msp430fr2311.h>
#define MCLK ((double)16700000.0)
#define ACLK 32768
#define delay_ms(x) __delay_cycles((long)(MCLK*(double)x/1000.0))
void TimerB0_EQandHVA_init(void);
void CLK_init(void);

int HVA_Status = 0;
#define EQ_freq 500
#define HVA1
#define HVA1_H P1IN & BIT0
#define HVA1_L ~(P1IN | ~BIT0)
#define HVA24_H P1IN & BIT1
#define HVA24_L ~(P1IN | ~BIT1)
#define EQ1switch BIT0
#define EQ1switch_H BIT0 & P2OUT
#define EQ1switch_L ~(BIT0 | ~P202
#define EQ2switch BIT1
#define EQ2switch_H BIT1 & P2OUT
#define EQ2switch_L ~(BIT1 | ~P2OUT)
#define EQ3switch BIT2
#define EQ3switch_H BIT2 & P2OUT
#define EQ3switch_L ~(BIT2 | ~P2OUT)
unsigned char Timer_EQ3 = 0; //由TimerB生成的EQ3开关控制信号
unsigned char HVA1_past;
unsigned char HVA24_past;

int main(void)
{

WDTCTL = WDTPW | WDTHOLD;                       // Stop watchdog timer
CLK_init();
// Configure GPIO
P1DIR &= ~(BIT0 | BIT1);
P2DIR |= BIT0 | BIT1 | BIT2;
P1OUT |= BIT0 | BIT1; 
P1REN |= BIT0 | BIT1; 
PM5CTL0 &= ~LOCKLPM5;

_enable_interrupt();

TimerB0_EQandHVA_init();
if(HVA1_H)
    HVA1_past=1;
if(HVA1_L)
    HVA1_past=0;
if(HVA24_H)
    HVA24_past=1;
if(HVA24_L)
    HVA24_past=0;


while(1)
{
    //HVA24电平翻转检测
    if(HVA24_past==0)
    {
        delay_ms(1);
        if(HVA24_H)
        {
            HVA_Status++;
            HVA24_past = 1;
        }
    }
    else if(HVA24_past==1)
    {
        delay_ms(1);
        if(HVA24_L)
        {
            HVA_Status++;
            HVA24_past = 0;
        }
    }
   //HVA1电平翻转检测
    if(HVA1_past==0)
    {
        delay_ms(1);
        if(HVA1_H)
        {
            HVA_Status = 0;
            HVA1_past = 1;
        }
    }
    else if(HVA1_past==1)
    {
        delay_ms(1);
        if(HVA1_L)
        {
            HVA_Status = 0;
            HVA1_past = 0;
        }
    }


    if(HVA1_H)
        HVA1_past=1;
    if(HVA1_L)
        HVA1_past=0;
    if(HVA24_H)
        HVA24_past=1;
    if(HVA24_L)
        HVA24_past=0;



    if(HVA_Status==4)
        HVA_Status = 0;

    // EQ1 EQ2 EQ3 Switch ctrl
    switch(__even_in_range(HVA_Status,4))
    {
        case 0b00:
            P2OUT |= (EQ1switch | EQ2switch | EQ3switch);
            break;
        case 0b01:
            P2OUT &= ~EQ1switch;
            P2OUT |= EQ2switch;
            if(Timer_EQ3)
                P2OUT |= EQ3switch;
            else
                P2OUT &= ~EQ3switch;
            break;
        case 0b10:
            P2OUT |= EQ1switch;
            P2OUT &= ~EQ2switch;
            if(Timer_EQ3)
                P2OUT |= EQ3switch;
            else
                P2OUT &= ~EQ3switch;
            break;
        case 0b11:
            P2OUT &= ~(EQ1switch | EQ2switch | EQ3switch);
            break;
        default: break;
    }
    delay_ms(100);
}

}

void CLK_init(void)
{
FRCTL0 = FRCTLPW | NWAITS_1;

__bis_SR_register(SCG0);                           // disable FLL
CSCTL3 |= SELREF__REFOCLK;                          // Set REFO as FLL reference source
CSCTL0 = 511;                                       // Set DCO and MOD registers
CSCTL1 &= ~(DCORSEL_7);                             // Clear DCO frequency select bits first
CSCTL1 |= DCORSEL_5;                                // Set DCO = 16MHz
CSCTL1 |= DISMOD_1 | DCOFTRIM;
CSCTL2 = FLLD_0 + 487;                              // DCOCLKDIV = 16MHz
__delay_cycles(10);
__bic_SR_register(SCG0);                          // enable FLL
while(CSCTL7 & (FLLUNLOCK0 | FLLUNLOCK1));         // FLL locked

CSCTL4 = SELMS__DCOCLKDIV | SELA__REFOCLK;          // set default REFO(~32768Hz) as ACLK source, ACLK = 32768Hz

}

void TimerB0_EQandHVA_init(void)
{
TB0CCR0= EQ_freq-1;
TB0CTL = TBSSEL__ACLK | MC__CONTINUOUS | TBIE | TBCLR;
}

#pragma vector = TIMER0_B0_VECTOR
__interrupt void timerB0_ISR(void)
{
if(TBIV & TBIV__TBIFG)
Timer_EQ3 = ~Timer_EQ3;
}

运行结果及报错内容

结果是没有正常的输出。I2C正常拉高但没有信号发送,看了一下变量HVA_status也一直是0。

万分感谢