gpt4 book ai didi

c - MSP430 - 如何将定时器 A1 中断用于不同目的?

转载 作者:太空宇宙 更新时间:2023-11-03 23:39:46 25 4
gpt4 key购买 nike

是否可以将定时器 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) 处理。

不要试图在运行时覆盖中断 vector ——那是个糟糕的主意。在 msp430 上,它还需要重新编程(部分)闪存。相反,编写单个处理程序并在其中区分特定于应用程序的逻辑。

关于c - MSP430 - 如何将定时器 A1 中断用于不同目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49074795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com