C MSP430-如何为不同目的使用定时器A1中断?

C MSP430-如何为不同目的使用定时器A1中断?,c,timer,interrupt,msp430,C,Timer,Interrupt,Msp430,对于不同的线路组,是否可以使用定时器A1中断用于不同的目的 我得到一条错误消息,我正在声明计时器A1中断,我有重复声明。我的代码有一个使用定时器A1的低功耗中断,以及一个应该使用定时器A1中断的RC充电和放电电路 是否可能有重复的计时器中断以及如何进行?您可以为计时器A1设置多个捕获和比较寄存器(CCR)。每个应用程序都可以使用自己的。然后在处理程序中,通过查看TAIV来解复用。来自msp430f1611的TI示例代码: void __attribute__ ((interrupt(TIMERA

对于不同的线路组,是否可以使用定时器A1中断用于不同的目的

我得到一条错误消息,我正在声明计时器A1中断,我有重复声明。我的代码有一个使用定时器A1的低功耗中断,以及一个应该使用定时器A1中断的RC充电和放电电路


是否可能有重复的计时器中断以及如何进行?

您可以为计时器A1设置多个捕获和比较寄存器(CCR)。每个应用程序都可以使用自己的。然后在处理程序中,通过查看
TAIV
来解复用。来自msp430f1611的TI示例代码:

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上,它还需要重新编程(部分)闪存。相反,编写一个处理程序并区分其中的应用程序特定逻辑。

通常,您可以检查处理程序中中断的来源。@WeatherVane中断向量存储在闪存中……您使用的是哪种型号?您可能可以使用多个CCR。@CL。谢谢您-尝试创新!但是它不能通过RAM中的另一个向量吗?@WeatherVane不,中断向量有一个固定的内存地址,它被映射到闪存。