是否可以将定时器A1中断用于不同用途的不同用途?
我收到错误消息,我宣布计时器A1中断,我有重复声明。我的代码具有使用定时器A1的低功耗中断,以及应该使用定时器A1中断的RC充电和放电电路。
是否可能有重复的定时器中断以及如何完成?
答案 0 :(得分:1)
您可以为定时器A1设置多个捕获和比较寄存器(CCR)。每个应用程序都可以使用它自己然后在处理程序解复用中查看TAIV
。来自TI的msp430f1611示例代码:
void __attribute__ ((interrupt(TIMERA1_VECTOR))) Timer_A1 (void)
{
switch( TAIV )
{
case 2: CCR1 += 1000; // Add Offset to CCR1
break;
case 4: CCR2 += 10000; // Add Offset to CCR2
break;
case 10: P1OUT ^= 0x01; // Timer_A1 overflow
break;
}
}
该MCU有三个寄存器:CCR0,CCR1和CCR2。为CCR1,CCR2和定时器计数器溢出(TAR
)调用定时器A1中断处理程序。 CCR0由单独的中断处理程序(A0)处理。
不要试图在运行时覆盖中断向量 - 这是一个糟糕的主意。在msp430上,它还需要重新编程(部分)闪存。相反,编写一个处理程序并区分其中的特定于应用程序的逻辑。