msp430 uart和timer中断

时间:2014-11-30 18:50:01

标签: 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 = TASSEL_2 + ID_3 + MC_1 + TAIE;
    TA0CCR0 = 0xffff;
    TACCTL0 = CM_0 + CCIE;
}

1 个答案:

答案 0 :(得分:1)

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

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