TI论坛
直播中

李巍

7年用户 1466经验值
私信 关注
[问答]

MSP-TS430RGZ48B开发板和MSP-FET430UIF调试器,为什么进不了Timer中断处理程序?


  •   我们购买了MSP-TS430RGZ48B开发板和MSP-FET430UIF(供电)调试器,
       但进不了timer中断处理程序!
       程序如下:
       
    #include
    int main(void)
    {
        WDTCTL = WDTPW + WDTHOLD; // Stop WDT
        P1DIR |= 0x01; // P1.0 output
        TA0CTL = TASSEL_1 + MC_2 + TACLR + TAIE; // ACLK, contmode, clear TAR
                 // enable interrupt
        __bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interrupts
        __no_operation(); // For debugger
    }
    // Timer0_A5 Interrupt Vector (TAIV) handler
    #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
    #pragma vector=TIMER0_A1_VECTOR
    __interrupt void TIMER0_A1_ISR(void)
    #elif defined(__GNUC__)
    void __attribute__ ((interrupt(TIMER0_A1_VECTOR))) TIMER0_A1_ISR (void)
    #else
    #error Compiler not supported!
    #endif
    {
         switch(__even_in_range(TA0IV,14))
         {
              case 0: break; // No interrupt
              case 2: break; // CCR1 not used
              case 4: break; // CCR2 not used
              case 6: break; // reserved
              case 8: break; // reserved
              case 10: break; // reserved
              case 12: break; // reserved
              case 14: P1OUT ^= 0x01; // overflow
                                break;
              default: break;
        }
    }

                                              

回帖(2)

qwe041

昨天 11:24
进不了Timer中断处理程序,  通常是外设的配置问题,  还有中断的触发条件有没有满足. 定时器有没有启动
举报

贾小龙

昨天 18:06
根据您提供的代码和描述,您正在使用MSP-TS430RGZ48B开发板和MSP-FET430UIF调试器,但无法进入Timer中断处理程序。以下是一些可能的原因和解决方案:

1. 确保您的中断服务例程(ISR)已正确定义。在您的代码中,您需要定义一个名为`Timer_A0_ISR`的函数,用于处理Timer A0中断。例如:

```c
#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A0_ISR(void)
{
    // 您的中断处理代码
}
```

2. 确保您的中断使能位已正确设置。在您的代码中,您已经设置了`TAIE`(Timer A0中断使能位),这是正确的。但是,请确保您没有在其他地方禁用中断。

3. 确保您的低功耗模式(LPM)设置正确。在您的代码中,您使用了`__bis_SR_register(LPM3_bits + GIE)`,这是正确的。这将使能全局中断(GIE)并进入低功耗模式3(LPM3)。请确保您没有在其他地方更改这些设置。

4. 检查您的时钟设置。确保您的系统时钟设置正确,以便Timer A0能够正常工作。在您的代码中,您使用了`TA0CTL = TASSEL_1 + MC_2 + TACLR + TAIE;`,这意味着您选择了ACLK作为时钟源,并设置了连续模式。请确保您的ACLK设置正确。

5. 使用调试器检查程序执行流程。使用MSP-FET430UIF调试器,您可以在`Timer_A0_ISR`函数处设置断点,以便在进入中断处理程序时暂停程序执行。这可以帮助您确定程序是否正确进入了中断处理程序。

6. 检查硬件连接。确保您的MSP-TS430RGZ48B开发板和MSP-FET430UIF调试器之间的连接正确无误。

通过检查和解决这些问题,您应该能够成功进入Timer中断处理程序。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分