Q:
看到中断部分,不禁要问个问题:当两个中断同时产生请求的情况下,或者在处理一个中断服务的时候又来了一个中断,低一级的中断是在高一级中断处理完成后再处理,还是在高一级中断处理完成后不管了啊。也就是高一级中断在退出中断服务程序时所要复位的中断请求信号是不是会影响低一级的中断处理啊?
A:
这个情况要看单片机对中断的支持方式。
先说中断优先级和中断嵌套
1.中断没有优先级的控制,这样的单片机连优先级都没有,更没有中断嵌套,新的中断需要等老的中断执行完后才会被响应。
2.中断支持优先级,但不支持中断嵌套,ARM就是这种处理方式。当单片机在执行中断程序时,有新的中断来会继续执行当前的中断程序,直到结束。优先级只是在同时又多个中断需要响应时才起作用,这时会优先响应优先级高的中断。
3.中断同时支持优先级和中断嵌套,在中断程序执行过程中如果有新的中断产生,而且新的中断优先级要高,就会暂停当前中断程序,转去响应更高优先级的中断。
回到问题中,高优先级中断退出后会不会影响其它低优先级中断?
只要是设计合理的单片机,都不会影响到低优先级中断,一般不同的中断会对应有不同的中断标志位,中断程序只清除自己的中断标志位,不会改变其它中断标志位,所以高一级的中断退出时是不会影响到低级别中断,低级别中断还能继续产生中断请求。
不过我印象中有遇到过设计太好的单片机,需要程序员一次将所有已经产生的中断处理完,否则就会丢失中断,这属于单片机设计失误,不用过多考虑。
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3学习整理】使用 LPUART 的loopback 模式实现核间通讯被打赏¥28元 | |
| arduinounoq原生zephyr环境搭建被打赏¥31元 | |
| 树莓派3+Klipper,MPU6050共振补偿被打赏¥41元 | |
| GroveCreatorKit套件+摇杆测评被打赏¥18元 | |
| 设备功耗web监控界面(ESP32C5)被打赏¥28元 | |
| OrangePiZero2W系统被打赏¥33元 | |
| Linux环境下以模拟方式快速实现出入管理功能测试被打赏¥24元 | |
| 树莓派3+Klipper,老3D打印机满血升级被打赏¥33元 | |
| OK1126B-S开发板下串口屏及其应用被打赏¥21元 | |
| 低功耗超声波液位测距仪(ESP32S3)被打赏¥27元 | |
我要赚赏金
