MCU中断初认识与总结

中断

中断的引入

MCU在按照顺序执行编译的代码(按照顺序次序执行)。对于外部的刺激,需要,MCU控制器需要对外部刺激,需要及时作出反应。

如果就是按照MCU顺序执行,有如下问题:

如果控制程序执行时间较长,不能及时响应外部刺激(前提是外部刺激持续足够时间)。

如果外部刺激持续时间较短,刺激马上消失,MCU内核会错过外部刺激,无动作。

因此需要引入一种机制,MCU内核可以暂停目前正在执行的程序,迅速响应外部动作。这种机制称为中断。

一边…一边

对于人类来说,我们一边做一件事,一边做另外一件事,好像是一种司空见惯的事情。

比如我在家里,一边写作业,一边等待某个人的到来。一般有如下方式:

一.      时不时的到门边,看看有没有人到来(查询方式)。

二.      一直在门口等待,一直等待到有人来,再去做作业(休眠-唤醒)。

三.      在门口等待一段时间,时间已过,马上回去自己做作业(poll方式)。

四.      一直在做作业,一直到有人来敲门,再去开门(异步通知)。

中断源类型及响应

对于上面的场景,有“敲门”这个中断,我才会去开门,迎接来宾。而对于其它“中断”,我就不一定去响应这个“开门”这个动作了。

中断动作响应过程:

对于外部声音:

敲门声

外部的鸟声

……………………

我的动作

对于外面的鸟声,充耳不闻。

敲门声处理:

暂停做作业,开门,迎接来宾。

……………………………

之后

继续做作业。

…………………

嵌入式中断类型

MCU执行过程中,也会被“异常”打断,这些异常主要有:

指令未定义

指令,数据访问出现问题

SWI(软件中断)

快中断

中断

在MCU中产生的中断主要情况有:

按键,定时器,ADC转换完成,串口接收与发送完成中断。

中断粗略流程:中断源产生中断->中断控制器->通知控制核心。

中断处理流程

第一步:初始化。(设置中断源,可以产生中断),(设置中断控制器),(设置CPU开关)。

第二步:执行正常程序

第三步:中断源产生中断。如按下按键,定时器中断-中断控制器-CPU中断

Cpu每执行一条指令,都会检查有无中断产生。

第四步:中断产生,开始处理

不同的中断,执行不同的处理函数(根据中断向量表去跳转, 后缀.s文件)。

(红色字体是硬件做的动作)

第六步:保存现场(R0~R15等各种寄存器)

处理中断,分辨中断源头,调用不同的处理函数。

恢复现场(恢复寄存器原来值,原先额寄存器值保存在栈中)

中断向量表

该内容出于编译文件的头部,一般是后缀.s的文件,具体内容如下:

 

图 1 中断向量表内容

这个是MCU有关的中断向量表内容,触发中断,调整到对应的向量表中执行。

 

posted @ 2022-07-27 22:39  JwChu  阅读(1130)  评论(0编辑  收藏  举报