Q:
看到中断部分,不禁要问个问题:当两个中断同时产生请求的情况下,或者在处理一个中断服务的时候又来了一个中断,低一级的中断是在高一级中断处理完成后再处理,还是在高一级中断处理完成后不管了啊。也就是高一级中断在退出中断服务程序时所要复位的中断请求信号是不是会影响低一级的中断处理啊?
A:
这个情况要看单片机对中断的支持方式。
先说中断优先级和中断嵌套
1.中断没有优先级的控制,这样的单片机连优先级都没有,更没有中断嵌套,新的中断需要等老的中断执行完后才会被响应。
2.中断支持优先级,但不支持中断嵌套,ARM就是这种处理方式。当单片机在执行中断程序时,有新的中断来会继续执行当前的中断程序,直到结束。优先级只是在同时又多个中断需要响应时才起作用,这时会优先响应优先级高的中断。
3.中断同时支持优先级和中断嵌套,在中断程序执行过程中如果有新的中断产生,而且新的中断优先级要高,就会暂停当前中断程序,转去响应更高优先级的中断。
回到问题中,高优先级中断退出后会不会影响其它低优先级中断?
只要是设计合理的单片机,都不会影响到低优先级中断,一般不同的中断会对应有不同的中断标志位,中断程序只清除自己的中断标志位,不会改变其它中断标志位,所以高一级的中断退出时是不会影响到低级别中断,低级别中断还能继续产生中断请求。
不过我印象中有遇到过设计太好的单片机,需要程序员一次将所有已经产生的中断处理完,否则就会丢失中断,这属于单片机设计失误,不用过多考虑。
有奖活动 | |
---|---|
【有奖活动——B站互动赢积分】活动开启啦! | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |