[应用相关] ST7外部中断疑问

[复制链接]
 楼主| juanhao 发表于 2007-4-18 10:43 | 显示全部楼层 |阅读模式
如果有A,B两个中断,A的中断优先权高,B的低,当在执行A中断服务程序的时候,B的中断产生,那么ST7是如何处理,是不理会还是挂起等到A中断服务程序退出再响应B?
 楼主| juanhao 发表于 2007-4-18 11:27 | 显示全部楼层

对浪淘沙的留言有个疑问!!

浪淘沙的留言:

首先你要明白,硬件的中断嵌套功能是指,当CPU响应某个中断请求时,处理该中断的过程,可以被软件中断级别比它高的中断所打断;在这里硬件的支持中断嵌套引入了一个软件中断级别的概念,通常我们说的中断级别称为硬件中断级别。

硬件中断级别的概念是,当两个中断源同时发出中断请求时,CPU首先响应级别高的中断请求;当CPU正在处理较低优先级的中断请求时,CPU在处理完该请求之前不能响应任何新的中断请求,即使新请求的优先级较高。
/*------------------------------------------------------------------
引入了软件中断的概念之后,上述限制被放宽了,即当CPU正在处理一个中断请求时,CPU可以响应软件(不是硬件)中断优先级较高的中断请求。
-------------------------------------------------------------------*/

明白了上述原理后,你的问题变得简单了;你只需在一个中断的处理程序中,打开中断允许位,这样任何新到的中断请求都会被响应,不同的是没有了软件中断级别的裁决。

我的问题:
        针对打了注释的一段我有个问题:当CPU正在处理一个中断请求时,产生软件优先级低的请求会在退出当前中断服务程序后执行吗?


8bit_mcu 发表于 2007-4-18 16:24 | 显示全部楼层

是这样的

ST7根据芯片型号不同,其中断控制部分也有所不同,区别在于有些支持嵌套中断,而有些不支持。

对于不支持嵌套中断的st7来说,没有软件优先级一说,当cpu正在处理一个中断请求时,若有其他中断产生,不管它的硬件优先级高还是低,都要等到当前中断处理完以后,才会响应下一个中断(除了不可屏蔽中断外)。硬件优先级只是用于在同时有两个外部中断被挂起时,硬件优先级高的会先被响应。

对于支持嵌套中断的ST7来说,当cpu正在处理一个中断时,若有软件优先级高的中断请求,则中断当前的中断处理,转而处理软件优先级高的中断。处理完后,再回去处理上次没有处理完的中断。
taitaijing 发表于 2011-11-25 21:27 | 显示全部楼层
这个东西很有指导意义,谢谢。
wangshi 发表于 2011-11-25 21:30 | 显示全部楼层
不错,是个很有用的东东。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

91

主题

187

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

91

主题

187

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部