飞凌OK6410学习之中断的学习

接下来就是中断了,记得我有个同学说,你没有搞懂中断说明你没有学单片机,是呀,中断确实是单片机的精华部分,废话不多说,直接进入正题:

中断也是一种异常模式,这在我们上一节的异常学习中就知道了。

中断有GPIO中断、UART中断、触摸屏中断等等。。。。

下面谈谈如何使用中断

1、  进行中断初始化(以按键为例)

A、 设置中断源

B、 设置中断控制寄存器

C、  打开总开关

首先找到中断源,在地板手册上面可以看到

飞凌OK6410学习之中断的学习_第1张图片

同时在核心板上面可以找到

可以知道GPN是控制按键的,那么设置中断控制源头的代码就是:

飞凌OK6410学习之中断的学习_第2张图片

然后接下来需要配置中断控制器:

所以可以得出设置中断寄存器的代码

继续,总开关是否打开?

总中断的开关需要看cpsr程序状态控制寄存器如下


飞凌OK6410学习之中断的学习_第3张图片

设置代码如下:


注意:CPU每执行一条指令之前都会判断是否会有中断发生

若果有中断发生:硬件会执行

1、  CPU进入IRQ中断;

2、  之前的Cpsr保存到spsr_irq

3、  使用当前模式下面的R13/R14_irq

4、  把下一条指令的地址存到R14_irq

5、  跳到0x18处执行

 

软件会执行:

1、  保存现场

2、  处理中断

A、 分辨中断

B、 调用相应的处理函数

3、  恢复现场

LR存放的是发生中断是那条指令的下一条指令地址,先看保存现场指令

为了更深入理解,我给个图解


最后一步还需要清除中断:

                                                                  清中断源

                                                                  清中断控制器

清除代码如下


这就是我的第一个中断程序

 

你可能感兴趣的:(飞凌OK6410学习之中断的学习)