本文介绍MCU中断响应流程及注意事项。
1.中断响应流程
中断响应的一般流程为:
1)断点保护
硬件操作,将PC,PSR等相关寄存器入栈保护
2)识别中断源
硬件操作,识别中断的来源,如果多个中断同时发生,高优先级中断先被响应
3)执行中断服务程序
用户编写,需要在此保存额外的寄存器,将其入栈保护,并在中断返回时出栈。用户也可以在此通过修改中断屏蔽寄存器,软件调整中断优先级(注意关中断,开中断)
4)断点恢复
硬件操作,将PC,PSR等相关寄存器出栈恢复,程序回到原中断处执行
2.注意事项
1)多个中断发生时,高优先级中断会被响应,执行完成后,低优先级中断再被响应。这里低优先级中断只是被抢占了,待高优先级中断响应完后仍然被响应。
2)中断发生时,执行中断服务程序,需立即清除中断标志位(首条语句),以便下次中断可以被及时响应。在执行当前中断服务程序时,当前中断仍可能发生,待当前中断响应完后可以再次被响应(若无更高优先级的中断)。
3)高优先级中断服务程序执行过程中,若有低优先级中断发生,低优先级中断会被暂时挂起,待高优先级中断服务程序执行完后在再响应,若有更高优先级中断则会优先响应更高优先级中断服务程序(中断嵌套)。
4)中断可以以查询方式执行,中断控制器不使能中断,查询外设中断标志位。比如在纯查询的软件体系结构中,可以通过查询外设的中断标志位,执行相应的程序。
总结,本文介绍了MCU中断响应流程及注意事项。