C MSP430-如何为不同目的使用定时器A1中断?
对于不同的线路组,是否可以使用定时器A1中断用于不同的目的 我得到一条错误消息,我正在声明计时器A1中断,我有重复声明。我的代码有一个使用定时器A1的低功耗中断,以及一个应该使用定时器A1中断的RC充电和放电电路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设置多个捕获和比较寄存器(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不,中断向量有一个固定的内存地址,它被映射到闪存。