标题: 有关uCos-II中关中断处理的疑问 [打印本页]

作者: rmgc606    时间: 2017-11-1 11:28
标题: 有关uCos-II中关中断处理的疑问
大家好,新人首贴,欢迎大家批评指正。

最近在拜读《嵌入式实时操作系统uCOS-II(第二版)》时,3.7节Idle Task中有如下描述:“空闲任务执行计数器加1操作,中断是先关闭再开启的。”说是因为防止加1操作被高优先级任务或中断服务程序打断,我忽然想到:如果中断被关闭期间,此时恰好来了一个外部IO中断请求,这个中断请求会使得某一个高优先级任务进入就绪态,会不会因为中断被关闭而丢失掉这次请求。虽然说先关闭再开启中断这个过程时间比较短,但理论上是不是还是存在这种可能的?如果是,如何有效避免?欢迎大家一起讨论

作者: yzwzfyz    时间: 2017-11-2 14:02
中断源动作后会做一个标记,这个标记并不因为中断关闭而消失。
CPU会不断地检查中断标记,如果被关闭则不响应。一旦打开,则按优先顺序中断。

所以回答是:
不会丢,再开放后,会中断。

作者: rmgc606    时间: 2017-11-3 11:43
yzwzfyz 发表于 2017-11-2 14:02
中断源动作后会做一个标记,这个标记并不因为中断关闭而消失。
CPU会不断地检查中断标记,如果被关闭则不 ...

如果是这样,我就明白了,谢谢!
那同理,如果在关中断期间,触发了多个中断,实际上也是多个中断标志被置位,只是因为关中断的原因,此时不能跳转到中断处理函数进行处理,当再次开中断后,会按照中断优先级进行逐一跳转处理,应该是这样吧?




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