【问题标题】:msp430 uart and timer interruptsmsp430 uart 和定时器中断
【发布时间】:2014-11-30 18:50:00
【问题描述】:

我有 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;
}

【问题讨论】:

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

标签: embedded microcontroller msp430 texas-instruments mspgcc


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-26
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多