我的问题更多是抽象的、但我稍后会尝试提供一些伪代码。 我正在尝试实施一个系统、在该系统中、我的 MSP 将在收到外部信号后开始特定的过程。 我对中断非常熟悉、知道它是根据需要在中断中运行整个计算的、 从中断调用函数时、它被冻结、因为"过程"(原谅我、我现在不能认为合适的术语)会在中断中等待、直到函数完成。 我要查找的内容与以下内容类似:
CONFIG_SETTINGS (void)
{
//configure stuff
}
int main()
{
//设置数据
enable_interrupts ();
_low_power_mode ();
}
#pragma vector = interrup_vector
_中断 void CHECK_SIGNAL (void)
{
//接收字节
//检查启动信号
如果(START 信号=接收到)
函数(void);
}
void 函数(void)
{
//执行所有计算
//我要在中执行的操作
//此函数
//中断}
我知道上面很少的代码使用正确的语法或关键字、但这更多是一个概念问题、而不是一个调试问题。 上述伪代码的运行方式是、"进程"将在 ISR 内运行函数、然后在函数停止执行后返回到 ISR。 考虑到这种做法是不好的、我的设置理论上允许这样做、因为我可以保证在函数完成之前不会有其他外部中断到达。
我想知道 MSP 架构是否允许该过程看起来更像:
- 进入 ISR
- 接收到 START 信号
- 中断被禁用/标志被清除
- ISR 退出
- 函数
- 完成功能后重新输入 LPM
有什么方法可以做到这一点吗?