什么是中断?
让CPU打断正常运行的程序,转而去处理紧急的事件(程序),就叫中断
中断执行机制,可简单概括为三步:
1,中断请求
外设产生中断请求(GPIO外部中断、定时器中断等)
2,响应中断
CPU停止执行当前程序,转而去执行中断处理程序(ISR)
3,退出中断
执行完毕,返回被打断的程序处,继续往下执行
STM32中断是怎么进入到中断服务程序的?
1.中断请求:当外部事件(如外部中断,定时器溢出等)或者内部事件(如ADC转换完成、串口接收完成等)发生时,相应的中断源会向NVIC(嵌套向量中断控制器)发生一个中断请求。
2.中断优先级判断:NVIC会根据中断的优先级来判断是否应该处理该中断。如果当前活动的中断优先级低于新请求的中断,则进行中断嵌套,处理更高优先级的中断。
3.保存上下文:当CPU接收中断并准备跳转到中断程序时,它会自动将当前的程序状态保存到栈中。这是为了在处理完中断后能够恢复中断前的状态继续执行。
4.跳转到中断向量:CPU通过查找中断向量表来确定中断的服务程序入口地址。STM32的中断向量表位于FLASH的开始部分,每个中断都有一个固定的向量地址。
5.执行中断服务程序:一旦确定了入口地址,CPU就会跳转到该地址并开始执行中断服务程序。在中断服务程序中,通常需要先清除中断标志,然后执行响应的处理代码。