ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MCU中断初认识与总结

2022-07-27 23:04:37  阅读:172  来源: 互联网

标签:总结 中断向量 中断 做作业 外部 MCU 执行


中断

中断的引入

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

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

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

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

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

一边…一边

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

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

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

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

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

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

中断源类型及响应

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

中断动作响应过程:

对于外部声音:

敲门声

外部的鸟声

……………………

我的动作

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

敲门声处理:

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

……………………………

之后

继续做作业。

…………………

嵌入式中断类型

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

指令未定义

指令,数据访问出现问题

SWI(软件中断)

快中断

中断

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

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

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

中断处理流程

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

第二步:执行正常程序

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

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

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

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

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

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

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

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

中断向量表

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

 

图 1 中断向量表内容

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

 

标签:总结,中断向量,中断,做作业,外部,MCU,执行
来源: https://www.cnblogs.com/zhuliushun001/p/16526845.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有