中断服务程序与中断处理程序是否是同一概念?

中断服务程序与中断处理程序是否是同一概念?,第1张

一般是分不清的,很多人会认为是同一个东西,起码我不能给你保证到底哪个是最底层,哪个不是,甚至不能保证他俩不是同一个意思,毕竟一个名词解释没人会那么上心,何况这俩词字面意思非常相近。。。。但这不重要,关键你要知道中断时有两层程序的。。。

一层是硬件相关,目的是执行中断找到中断向量,为中断服务历程提供运行环境(比如租滑保存中断前的各工作寄存器状祥型含态,屏蔽中断,中断嵌套计数,或者取消屏蔽)等等,搞定后跳转到中断向量指向的位置,执行中断服务(通常如果是完善的程序,这里应该允许添加多个服务历程)。。

服务例程就是具体要执行的内容,是和硬件无关的,换一个型号的CPU理论上应该保证也能顺利使用不用该代码。。

无非就这两层关系,如果要移植程序,硬谨笑件相关的中断处理必须修改,硬件无关的,理论上是不用修改,但写的水平很差劲,没有完全脱离硬件,也得改。。。

ISR = Interrupt Service Routine,裤氏中断服务子程序

中断服务子程序有可能与程序主体“并行”运行,为防止编译器错误地认为其变量不会同时搭李使用而分配重叠地址,有些情况下会要求ISR中的胡枝散变量都声明为volatile确保独立分配独立运行不被篡改。

1、ISR不能有返返森回值,大世迹必须用void;

2、ISR不能传递参数,必须用void;

3、ISR应该是短而高效的,所以不推荐在ISR中做浮点运算,应该只由中断发出消息或滚并置位标志然后由应用层去处理其他工作;

4、ISR中不应该有重入和性能上的问题,因此使用pintf()函数也是不好的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12402782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存