主题中讨论的其他器件:MSP-EXP430FR4133
大家好、
我正在尝试学习如何使用 MSP-EXP430FR4133开发板上的计时器、但我很难理解计时器及其中断的命名规则。
根据产品特定数据表、 我看到这个特定的芯 片有"两个16位定时器、每个定时器有3个捕捉/比较寄存器(Timer_A3)"、所以我认为这个名称意味着"Timer_A3"是 TI 为 Timer_A 的特定变体指定的名称、而 Timer_A 恰好有3个捕捉/比较寄存器。 到目前为止、相当简单...
现在、我参考"MSP430FR4xx 和 MSP430FR2xx 系列用户指南"、其中指出"在给定的器件上可能存在多个 Timer_A 实例。 使用前缀 TAx、其中 x 大于等于零、表示 Timer_A 实例化。 对于具有一个实例化的器件、x = 0。 后缀 n、其中 n = 0至6、代表与 Timer_A 实例关联的特定捕捉/比较寄存器。"
因此、这将使我相信我的两个计时器称为 TA0和 TA1。 是这样吗?
我感到困惑的是、当我尝试理解中断矢量的命名时... 我已获得以下示例代码、该代码在器件上按预期运行。
#include
#include
易失性 bool TimerA0_CCR0_INTERRUPT_HIT = 0;
volatile unsigned int TimerA0_period = 16000;
#pragma vector = TIMER0_A0_VECTOR //计时器 A0中断 ISR
_interrupt void TIMERA0_ISR0 (void)
{
TimerA0_CCR0_INTERRUPT_HIT=1;//在 A0中断命中时、设置标志
}
#pragma vector = TIMER0_A1_vector //计时器 A1中断 ISR
_interrupt void TIMERA0_ISR1 (void)
{
switch (__evo_in_range (TA0IV、10))//清除标志
{
;//未使用
}
}
在这里、我们看到计时器0被称为 TIMER0_A0_VECTOR。 这个"A"是从哪里来的、为什么它不是"A3"?
此外、据我了解、 上述 TIMERERA0_ISR0 (void)仅由计时器 TA0的捕捉/比较中断触发。 此外、 TIMERA0_ISR1 (void)由源自 TA0的任何其他中断触发、在本例中、我对此不感兴趣、因为我只需使用 c/c 中断来使 LED 闪烁。 我对此的理解是否正确?
很抱歉这个冗长的帖子。 我想我理解这些概念、但我真的很难理解中断矢量名称的复杂性。