重新安装所有IDE时,我或多或少都遇到了理论上的问题...
因此,我主要与MSP430一起工作,并且很好奇我为单个中断向量创建多个ISR会发生什么。
假设我正在监视Port2(引脚输入)是否有按钮按下。
#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;
}
}
它们对应于被按下的不同按钮,但对应于相同的中断向量。编译器编译时,如果服务例程属于同一向量,是否会将它们组合在一起?每当PORT2中断消失时,微控制器是否按顺序执行两个指令?
如上所述,这取决于实现;但是,到目前为止,我还从未见过支持多个中断服务程序的微控制器。
大多数常见的微控制器系列实现的标准行为是:一个向量=一个服务例程。
此外,正如其他用户在注释中指出的那样,您的代码在链接时会触发重复的符号错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句