中断疑惑

2019-07-21 07:12发布

问下大家,假如我在中断函数里加个延时,在这个延时的过程中又触发了一次一样的中断,那等到中断函数处理完后,还会再进入中断吗?如果触发更高优先级的中断呢?谢谢


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
warship
1楼-- · 2019-07-21 08:20
首先,更高优先级的中断会立即被执行。

第一个问题:同一个中断再次触发,本次中断执行完毕后会再次进入中断。
zc123
2楼-- · 2019-07-21 08:32
1.中断触发的流程是 信号源触发->置相应的中断标志位->相应中断位使能,则触发中断,因此根据清中断标志位置决定是否继续触发
方式一:
clr_int
delay延时(再次触发中断,中断标志位置位)
中断退出,此时中断标志位仍然置位,继续触发中断,不影响
方式二:
delay延时(再次触发中断,中断标志位置位)
clr_int
中断退出,此时再次触发的中断标志位就被清了,丢失
2.触发更高等级中断和delay在某些状态下效果一致,同上。所以一般进中断后读取标志位后就清中断,然后在处理,这样连续两次触发的相同中断不容易漏掉
1213333
3楼-- · 2019-07-21 13:32
zc123 发表于 2018-12-3 16:38
1.中断触发的流程是 信号源触发->置相应的中断标志位->相应中断位使能,则触发中断,因此根据清中断标志位 ...

好的,谢谢
1213333
4楼-- · 2019-07-21 16:27
warship 发表于 2018-12-3 20:28
首先,更高优先级的中断会立即被执行。

第一个问题:同一个中断再次触发,本次中断执行完毕后会再次进入 ...

如果清除标志位了,也会执行?
warship
5楼-- · 2019-07-21 21:17
 精彩回答 2  元偷偷看……
warship
6楼-- · 2019-07-22 02:42
有兴趣看看我曾经写过的帖子
http://www.openedv.com/forum.php?mod=viewthread&tid=275496

一周热门 更多>