打印

ISR写作注意事项

[复制链接]
1825|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxmzzr|  楼主 | 2012-2-25 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1:尽量不要在ISR内使用全局变量,如果一定要使用的话一定要做好保护,我们称这种应该受保护的程序区段为critical section.(保护的方法很多,最简单的是在进入critical section之前,先禁止中断的产生,所以在critical section中的全局变量就不会被ISR破坏,从而达到保护效果)
2:ISR的第一个动作一定是将所有的CPU内部缓存器存储起来,一般都是存在stack memory内,而ISR的最后一个动作是返回所有缓存器的值。
3:调用外部函数时要确认其是否“可重进入(reentry)”,如果一定要在ISR内调用非 reentry的函数,则一般程序在使用同一个模块的函数时,一定要加以保护。
4:ISR的程序或执行的时间尽量不要太长。(一来不易掌握全局变量以及外部函数的使用,二来ISY执行时通常不允许其他中断产生,如果执行时间太长,使用者会觉得系统效能不稳定)
沙发
拿起书本| | 2012-2-25 23:50 | 只看该作者
ISR尽量不要牵涉到复杂的算法,它的任务只是负责弄清楚发生了什么硬件事件,然后将硬件送给上层的程序,交由系统或应用程序决定要如何处理这个硬件事件。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

460

主题

2188

帖子

12

粉丝