gpt4 book ai didi

c - 如果我为单个中断创建多个 ISR 会怎样?

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:10 25 4
gpt4 key购买 nike

当我所有的 IDE 都在重新安装时,我或多或少有这个理论问题......

所以我主要使用 MSP430,我很好奇如果我为单个中断 vector 创建多个 ISR 会发生什么。

假设我正在观察端口 2(引脚输入)是否按下按钮。

#pragma vector = PORT2_VECTOR
__interrupt void Port2_ISR_1 (void)
{
if (BUTTON1_DOWN)
{
g_temp = 1234;
}
}

现在,如果我在某处添加另一个对应于相同 PORT2_VECTOR 的位置会怎样?

#pragma vector = PORT2_VECTOR
__interrupt void Port2_ISR_2 (void)
{
if (BUTTON2_DOWN)
{
g_temp = 2345;
}
}

它们对应于被按下的不同按钮,但对应于相同的中断 vector 。编译器在编译时,如果属于同一个vector,是否会把它们放在一起?每当 PORT2 中断关闭时,微 Controller 是否按顺序执行两者?

最佳答案

如上所述,这取决于实现;然而,到目前为止,我还没有遇到过支持多个中断服务程序的微 Controller 。

最常见的微 Controller 系列实现的标准行为是:一个 vector = 一个服务例程。

此外,正如其他用户在评论中指出的那样,您的代码在链接时会触发重复符号错误。

关于c - 如果我为单个中断创建多个 ISR 会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19459435/

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