标题: CPU正在中断处理的函数是否会被高优先级的打断? [打印本页]

作者: 1314love    时间: 2022-9-5 16:53
标题: CPU正在中断处理的函数是否会被高优先级的打断?
当CPU正在处理中断函数时,优先级更高的中断会不会打断这个正在执行的中断函数?

作者: Hephaestus    时间: 2022-9-5 19:57
如果不会的话,你觉得设计中断优先级这个东西有什么用呢?
作者: 非凡科技    时间: 2022-9-5 20:29
不会的,中断一旦进入不管高低,是不会被更高的打断,至少STC是这样
作者: Y_G_G    时间: 2022-9-5 20:52
当我看到这个问题的时候,并不知道答案
然后双击打开了STC单片机的数据手册
找到"中断"这个章节,再点击进去,就看到这几行字了
整个过程大概花了30秒左右
并不是说不能提问,毕竟这是个论坛
但对于你个人而言,一些少许的思考或者是搜索一下还是要有的吧



作者: 188610329    时间: 2022-9-5 22:12
非凡科技 发表于 2022-9-5 20:29
不会的,中断一旦进入不管高低,是不会被更高的打断,至少STC是这样

做一个 低优先极的 外部中断 INT0,  做一个高优先级的定时器中断 T0,   T0中断 每20ms 中断一次, 累加 25次 翻转LED,即:1秒闪烁一次,  INT0 中断 响应后 执行 while(1); 即:死在中断里不要出来。 然后,你看看当你 按下按键后,LED还闪不闪 就知道 高级中断能否打断 低级中断了, 至少STC是 可以打断的。
作者: 君工创    时间: 2022-9-5 22:52
Y_G_G 发表于 2022-9-5 20:52
当我看到这个问题的时候,并不知道答案
然后双击打开了STC单片机的数据手册
找到"中断"这个章节,再点击进 ...

看到这两行字的朋友从此之后明白了这个中断逻辑。
作者: coody_sz    时间: 2022-9-5 22:53
非凡科技 发表于 2022-9-5 20:29
不会的,中断一旦进入不管高低,是不会被更高的打断,至少STC是这样

觉得你理解错误。STC的中断是有优先级的,高优先级的中断一定可以打断低优先级中断,测试也很简单,比如你让定时器1ms中断,高优先级,中断取反一个IO输出500Hz方波。定时器1中断10ms,低优先级,然后在定时器1中断中延时5ms再退出。你测量会发现,定时器0的中断不受影响的。
作者: 杰西Jesse    时间: 2022-9-6 16:01
中断有优先级的。。。。
作者: yzwzfyz    时间: 2022-9-7 11:15
重复一下沙发的话
作者: XCYYLX    时间: 2022-9-8 19:43
这属于中断嵌套了,看S7-200的是不能中断嵌套的,也就是说,当银牌客户正在柜台办理业务,是不能被金牌用户中断的,它的优先级只是中断队列里的优先。
作者: qazwsx111111    时间: 2022-9-9 04:48
高优先级的中断请求可以打断低优先级的中断,反之,低优先级的中断请求不可以打断高优先级及同优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来决定系统先响应哪个中断。
作者: dreamjack    时间: 2022-9-9 06:50
分两种情况:1. 优先级低正在发生,开始进入  进入中断或退出中断  的过程,是不会被中断的;2.优先级低的中断正在执行你所写的代码时,执行完当前指令,会暂时中止该程序执行,进入优先级高的中断。
作者: 大漠落日    时间: 2022-9-9 07:28
会出现中断嵌套现象,如果你的程序不允许,就在进中断后关闭中断,退出前开中断,
作者: wufa1986    时间: 2022-9-9 09:21
不同芯片有所不同,51是不能套嵌,但是很多芯片都能套嵌,就会打断中断
作者: 188610329    时间: 2022-9-9 10:50
wufa1986 发表于 2022-9-9 09:21
不同芯片有所不同,51是不能套嵌,但是很多芯片都能套嵌,就会打断中断

很多芯片不能嵌套,偏偏51是可以嵌套的,IP这个寄存器是51的标配,就是设优先级的。至于多级嵌套,那是到了增强51才有的。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1