1,尽量不要在ISR内使用全局变量,如果一定要使用的话要做好保护,我们称这种应该受保护的区段为critical section.(方法很多,最简单的是在进入critical section之前,先禁止中断的产生,所以在critical section中全局变量不会被ISR破坏,从而达到保护的效果。
2,ISR的第一个动作一定是将所有的CPU内部缓存器存储起来,一般都是存在stack memory内,而ISR的最后一个动作就是返回所有缓存器的值。
3,调用外部函数时要确认其是否“可重进入”,如果一定要在ISR内调用非常reentry的函数,则一般程序在使用同一个模块的函数时,一定要加以保护。
4,ISR的程序或执行时间尽量不要太长。
5,IST尽量不要牵涉到复杂的算法,它的任务只是负责弄清楚发生了什么硬件送给上层的程序,交由系统或应用程序决定要如何处理这个硬件事件。 |