【发布时间】:2016-03-22 09:21:55
【问题描述】:
使用 CCS,嵌入式编程,MSP430F63736A
在我的应用程序中,我使用定时器 A 来切换 LED(开/关)不同的时间。
例如: LED 亮起 - 0.5 秒 LED 熄灭 - 3 秒
当定时器达到寄存器 TA1CCR0 中的值时,我需要重置定时器。这些时间(0.5 s 和 3 s)在寄存器 TA1CCR0 中。问题是,如果我将寄存器 TA1CCR0 的值从 0.5 秒更改为 3 秒,它将从 0.5 秒计数到 3 秒。我需要整整 3 秒,所以我需要一个重置计时器。
这就是我要切换 LED 的中断例程
if (P4OUT == 0x00)
{
P4OUT ^= BIT6; // LED ON
TA1CCR0 = (sekunda*t1); //t1- 3 s.... pc 2s
}
else
{
P4OUT = 0x00;
TA1CCR0 = (sekunda*t2);
}
}
【问题讨论】:
-
您使用的是哪种定时器模式,向上还是连续?为什么?为什么不对 CCR 使用设置/重置模式?
-
您应该设置 Timer A Counter 寄存器 (TAR),而不是 Capture Compare 寄存器来更改计数器值。最好在这样做之前停止计时器。