【发布时间】:2017-03-25 08:16:53
【问题描述】:
我可以在 ISR 之外调用函数吗,从 ISR 内部调用,该 ISR 由 AT89S52 中的其他函数(例如,来自 MAIN)使用 C 调用?
【问题讨论】:
-
你能用一些伪代码解释一下吗?
我可以在 ISR 之外调用函数吗,从 ISR 内部调用,该 ISR 由 AT89S52 中的其他函数(例如,来自 MAIN)使用 C 调用?
【问题讨论】:
在任何架构中从 ISR 调用函数都是合法的 - 尽管并不总是可取的。
您需要考虑所讨论的函数是否适合在中断和多线程上下文中执行;例如,它需要是可重入的,并且必须以原子方式或以确保一致性的方式访问共享资源,当然不应该无限期地阻塞或忙等待。
您可能还需要考虑调用函数的堆栈要求以及函数调用本身在中断处理时间方面的开销。可以考虑内联函数。
【讨论】: