Q:
看到中断部分,不禁要问个问题:当两个中断同时产生请求的情况下,或者在处理一个中断服务的时候又来了一个中断,低一级的中断是在高一级中断处理完成后再处理,还是在高一级中断处理完成后不管了啊。也就是高一级中断在退出中断服务程序时所要复位的中断请求信号是不是会影响低一级的中断处理啊?
A:
这个情况要看单片机对中断的支持方式。
先说中断优先级和中断嵌套
1.中断没有优先级的控制,这样的单片机连优先级都没有,更没有中断嵌套,新的中断需要等老的中断执行完后才会被响应。
2.中断支持优先级,但不支持中断嵌套,ARM就是这种处理方式。当单片机在执行中断程序时,有新的中断来会继续执行当前的中断程序,直到结束。优先级只是在同时又多个中断需要响应时才起作用,这时会优先响应优先级高的中断。
3.中断同时支持优先级和中断嵌套,在中断程序执行过程中如果有新的中断产生,而且新的中断优先级要高,就会暂停当前中断程序,转去响应更高优先级的中断。
回到问题中,高优先级中断退出后会不会影响其它低优先级中断?
只要是设计合理的单片机,都不会影响到低优先级中断,一般不同的中断会对应有不同的中断标志位,中断程序只清除自己的中断标志位,不会改变其它中断标志位,所以高一级的中断退出时是不会影响到低级别中断,低级别中断还能继续产生中断请求。
不过我印象中有遇到过设计太好的单片机,需要程序员一次将所有已经产生的中断处理完,否则就会丢失中断,这属于单片机设计失误,不用过多考虑。
打赏帖 | |
---|---|
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 |