MSP430 - 如何将定时器A1中断用于不同目的?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSP430 - 如何将定时器A1中断用于不同目的?相关的知识,希望对你有一定的参考价值。
是否可以将定时器A1中断用于不同用途的不同用途?
我收到错误消息,我宣布计时器A1中断,我有重复声明。我的代码具有使用定时器A1的低功率中断,以及应该使用定时器A1中断的RC充电和放电电路。
是否可能有重复的定时器中断以及如何完成?
答案
您可以为定时器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。定时器A1中断处理程序为CCR1,CCR2和定时器计数器溢出(TAR
)调用。 CCR0由单独的中断处理程序(A0)处理。
不要试图在运行时覆盖中断向量 - 这是一个糟糕的主意。在msp430上,它还需要重新编程(部分)闪存。相反,编写一个处理程序并区分其中的特定于应用程序的逻辑。
以上是关于MSP430 - 如何将定时器A1中断用于不同目的?的主要内容,如果未能解决你的问题,请参考以下文章