一、什么是中断
中断是指CPU在正常执行程序时,遇到外部/内部的紧急事件需处理,暂停当前程序的执行,转而去处理紧急事件,待事件处理完毕后,返回被打断的程序继续执行,这个过程就称之为中断。
中断的意义:提高CPU的效率,并且能实时处理紧急事件;中断在多任务处理中,尤其重要。
二、怎么进行中断
一个完整的中断处理过程可分为4个步骤:中断请求、中断响应、中断服务和中断返回。
中断请求:中断源向CPU发出中断请求信号,此时的中断控制系统的中断请求寄存器置位,向CPU请求中断。
中断响应:CPU的中断系统根据情况判断中断请求是否暂停当前程序转而执行中断程序。具体的判断条件:
(1)中断源发出中断请求。
(2)系统允许中断提出中断请求,即中断没有屏蔽。
(3)无同级或更高的中断正在处理。
中断服务:为处理中断而写的程序称为中断程序。中断程序的入口地址称为中断向量,所有的中断向量汇成一张表,称为中断向量表。具体的中断向量表可以查看stm32的技术参考手册(寄存器)。
中断返回:中断程序执行结束后,返回被打断的主程序的断点。
在CPU中断响应后要去处理中断程序之前,断点的状态参数要放入堆栈中,即保护“现场”,中断程序执行结束后,将压入堆栈的状态参数送回到原来的寄存器,即出栈,才能准确地返回到断点。
三、stm32的中断和异常介绍
异常与中断的概念相近,异常是指由内核产生的中断。如指令执行错误。
如果没有特殊说明,中断特指外部中断,外部中断:由外部设备或外部信号引发,例如按键按下、外部传感器信号变化等。外部中断用于响应外部事件,并及时处理相关任务。在使用STM32中,无须严格区分中断和异常。
异常的向量表