1.5.1异常与中断_概念引入与处理流程

MCU正常是运行在用户模式,也就是运行在我们写的主函数main中。但是,当有一些异常发生时,比如指令不对,数据访问有问题或者Reset等异常情况发生时,CPU就会进入特殊模式进行异常处理。
在这里插入图片描述

比如,我们希望按键按下就把LED小灯点亮,这个时候如果在程序中轮询按键的状态,就有可能发生检测延时。按键按下了但是程序还没执行到询问按键状态的地方,等执行到了,按键已经松开了,这样就达不到我们期望的效果。

为了可以即时的做出响应,MCU硬件上有一种异常,叫做中断,我们可以把按键这个引脚配置为一个外部中断引脚,当按键按下的时候进入响应的中断服务程序,在子程序中更改标志位,在主程序中做出处理,把LED小灯点亮。

在进入中断服务程序,我们需要将原来的程序状态保存一下,主要是保存寄存器的状态,然后跳到中断服务程序进行处理,处理完还要跳回原来的程序接着运行。所以,中断处理程序过程如下:

  1. 保存现场(保存各类寄存器);
  2. 调用处理程序(处理中断/异常);
  3. 恢复现场(回到原来的程序继续执行)。

ARM对中断/异常的使用过程:

  1. 首先需要初始化,a.设置中断源,让它可以产生中断;b.设置中断控制器(设置是否要屏蔽,设置优先级等);c.使能中断总开关;
  2. 中断未触发,这时先执行其他程序;
  3. 产生中断,比如按下按键,这时中断控制器会收到信号,然后中断控制器给CPU发信号;
  4. CPU每执行完一条指令,都会检测有无中断/异常产生(这一功能是由硬件实现);
  5. 发现有异常/中断产生,开始处理。对于不同的异常,CPU会跳到不同的地址(异常向量,有一个异常向量表)执行程序;(这些地址上,只是一条跳转指令,跳去执行其他函数, 这些函数,需要保存现场,处理异常(中断)调用处理函数,恢复现场)。

2440的异常向量表如下:
在这里插入图片描述
在这里插入图片描述
那么,中断函数怎样调用呢?

答:不多说了,很基础了,看图就能懂。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值