Q:
看到中断部分,不禁要问个问题:当两个中断同时产生请求的情况下,或者在处理一个中断服务的时候又来了一个中断,低一级的中断是在高一级中断处理完成后再处理,还是在高一级中断处理完成后不管了啊。也就是高一级中断在退出中断服务程序时所要复位的中断请求信号是不是会影响低一级的中断处理啊?
A:
这个情况要看单片机对中断的支持方式。
先说中断优先级和中断嵌套
1.中断没有优先级的控制,这样的单片机连优先级都没有,更没有中断嵌套,新的中断需要等老的中断执行完后才会被响应。
2.中断支持优先级,但不支持中断嵌套,ARM就是这种处理方式。当单片机在执行中断程序时,有新的中断来会继续执行当前的中断程序,直到结束。优先级只是在同时又多个中断需要响应时才起作用,这时会优先响应优先级高的中断。
3.中断同时支持优先级和中断嵌套,在中断程序执行过程中如果有新的中断产生,而且新的中断优先级要高,就会暂停当前中断程序,转去响应更高优先级的中断。
回到问题中,高优先级中断退出后会不会影响其它低优先级中断?
只要是设计合理的单片机,都不会影响到低优先级中断,一般不同的中断会对应有不同的中断标志位,中断程序只清除自己的中断标志位,不会改变其它中断标志位,所以高一级的中断退出时是不会影响到低级别中断,低级别中断还能继续产生中断请求。
不过我印象中有遇到过设计太好的单片机,需要程序员一次将所有已经产生的中断处理完,否则就会丢失中断,这属于单片机设计失误,不用过多考虑。
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3XX】LPSPI参数配置说明被打赏¥21元 | |
| 在WT9932C61-TINY上实现超声波测距被打赏¥22元 | |
| 基于WT9932C61-TINY的环境构建及OLED屏驱动测试被打赏¥20元 | |
| 【S32K3XX】Core-to-Core 中断使用被打赏¥21元 | |
| 「AI编程记录--含源码」用一晚上的时间写一个esp32的示波器被打赏¥19元 | |
| STM32C0116DK开发探索记(3)被打赏¥30元 | |
| STM32C0116DK开发探索记(2)被打赏¥24元 | |
| STM32C0116DK开发探索记(1)被打赏¥29元 | |
| 谨防极海G32M3101电机评估板易跌落的陷阱被打赏¥24元 | |
| 【全网首拆】M5STACK ATOM系列开发板拆解 / AtomS3R-CAM摄像头更换方法(提高10倍像素)被打赏¥26元 | |
我要赚赏金
