目录
中断是什么,如何去更好的理解中断?
中断是什么?
要是想更好的理解终端,我们需要知道,什么是中断?
在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。
当然,中断这个概念对初学者会有点难以理解,这里我们举一个例子:
比如我在家里玩游戏,这时候有快递员送货上门我听到敲门声,那我肯定是先暂停打游戏先去开了门,然后取完快递后,再继续回去打游戏。
这里过程我们可以分析为:
1.在家里打游戏是我当前执行的主程序
2.听到敲门声是中断申请
3.暂停打游戏去开了门,并且取完快递是单片机对中断的响应和处理
4.回去继续打游戏是中断结束返回继续执行被打断的主程
中断存在的意义是什么,为什么要有中断?
中断能够对突发事件进行及时处理,实现程序的并行化(时间片),进而提高CPU的工作效率。当发生突发事件时,比如外部触发的输入信号、定时器溢出等,中断会立即打断正在执行的程序,转而执行中断服务函数(ISR)来处理该事件。
为什么提高效率了?
因为CPU对于没有发生的事情是在不停的在轮询(询问有没有发生?)
中断能提高CPU的效率,同时能对突发事件做出实时处理。实现程序的并行化,实现嵌入式系统进程之间的切换,中断不需要轮询,cpu省出时间去处理别的事情。
中断是如何执行的?
下面使用一张图片来进行简易的理解
正如上面举得例子,主程序就是打游戏,中断程序就是外卖,而这里的嵌套中断程序可以理解为,发生了更加紧急的事件,比如家里发生了地震。这时候,外卖也来不及处理,必需暂停拿外卖的程序,去处理应对地震的程序。
中断向量表
要想继续去了解中断,必须要知道中断向量表,在这里,我贴出一张F系列的中断向量表
关于中断的深入学习
由于本篇文章只是帮助不了解中断的朋友去初步认识中断,由于本人能力有限,也需要不停的学习,所以不再往下深入介绍,如果有兴趣的朋友,可以去了解一下:
NVIC-嵌套向量中断控制器
EXTI—外部中断/事件控制器