1:尽量不要在ISR内使用全局变量,如果一定要使用的话一定要做好保护,我们称这种应该受保护的程序区段为critical section.(保护的方法很多,最简单的是在进入critical section之前,先禁止中断的产生,所以在critical section中的全局变量就不会被ISR破坏,从而达到保护效果)
2:ISR的第一个动作一定是将所有的CPU内部缓存器存储起来,一般都是存在stack memory内,而ISR的最后一个动作是返回所有缓存器的值。
3:调用外部函数时要确认其是否“可重进入(reentry)”,如果一定要在ISR内调用非 reentry的函数,则一般程序在使用同一个模块的函数时,一定要加以保护。
4:ISR的程序或执行的时间尽量不要太长。(一来不易掌握全局变量以及外部函数的使用,二来ISY执行时通常不允许其他中断产生,如果执行时间太长,使用者会觉得系统效能不稳定) |