明确的说,ARM Cortex 不允许同一个中断向量的中断服务程序嵌套。
如果你确定在该中断服务程序运行时,该中断又可能再次发生,那么你可以在处理完一次事件后,不退出中断服务程序,而跳回到函数入口处再次检查中断标志,如果发现有新的标志,那么继续处理就行了。
void isr ()
{
while (检查中断标志,如果有) {
处理之并清除中断标志
}
}
但这种方法仅仅适合偶尔的中断突发(快速多次发生),如果不是偶尔而是经常,那么可能表示你的 CPU 处理能力不够(术语过载),你应该换一个更快的 CPU。 |