Embedded msp430 uart和定时器中断

Embedded msp430 uart和定时器中断,embedded,microcontroller,msp430,texas-instruments,mspgcc,Embedded,Microcontroller,Msp430,Texas Instruments,Mspgcc,我有msp430系列mcu(实际上是启动板上的msp430g2553)。我已经编写了uart驱动程序,它可以正常工作。但在我添加了定时器驱动程序之后,我发现了一些问题:uart在第一次定时器中断后停止工作。我需要在定时器中断处理程序中恢复一些标志吗 interrupt(TIMER0_A0_VECTOR) enablenested timer0_isr() { P1OUT ^= BIT6; } void timer_init(void) { int i; TACTL =

我有msp430系列mcu(实际上是启动板上的msp430g2553)。我已经编写了uart驱动程序,它可以正常工作。但在我添加了定时器驱动程序之后,我发现了一些问题:uart在第一次定时器中断后停止工作。我需要在定时器中断处理程序中恢复一些标志吗

interrupt(TIMER0_A0_VECTOR) enablenested timer0_isr() {
    P1OUT ^= BIT6;
}

void timer_init(void) {
    int i;
    TACTL = TASSEL_2 + ID_3 + MC_1 + TAIE;
    TA0CCR0 = 0xffff;
    TACCTL0 = CM_0 + CCIE;
}

由于您只是从0计数到0xFFFF,因此实际上不需要处于“向上模式”(MC_1),即计数到寄存器TA0CCR0中的值,您可以处于“连续模式”(MC_2),该模式自动从0计数到0xFFFF,并且如果我没有记错的话,将不再需要任何TA0CCRX寄存器


否则你应该养成说TACTL=TACLR的习惯;(清除此寄存器)在设置任何值之前,这可能会有所帮助。

要查看micro是否卡在ISR中,可以尝试向主程序(甚至在UART ISR中)添加LED闪烁灯。我知道这是一个可笑的简单想法,但有时这些可能是发现问题的地方。