TI中文支持网
TI专业的中文技术问题搜集分享网站

关于msp430的定时中断问题

int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x02; // P1.0 output
CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 50000; //50000—>44.5ms 925—>825us
TACTL = TASSEL_2 + MC_2; // SMCLK, contmode

__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
while(1)
{
_NOP();
}
}

// Timer A0 interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(TIMERA0_VECTOR))) Timer_A (void)
#else
#error Compiler not supported!
#endif
{
P1OUT ^= 0x02; // Toggle P1.0
CCR0 += 50000; // Add Offset to CCR0
}

从中断出来以后,始终停在 __bis_SR_register(LPM0_bits + GIE);  的位置。

无法进入主循环

Ben Qin:

你好,while(1)循环是多余的

wu yue said:从中断出来以后,始终停在 __bis_SR_register(LPM0_bits + GIE);  的位置。

是的,程序会在这里等待中断的触发。

赞(0)
未经允许不得转载:TI中文支持网 » 关于msp430的定时中断问题
分享到: 更多 (0)