接下来就是中断了,记得我有个同学说,你没有搞懂中断说明你没有学单片机,是呀,中断确实是单片机的精华部分,废话不多说,直接进入正题:
中断也是一种异常模式,这在我们上一节的异常学习中就知道了。
中断有GPIO中断、UART中断、触摸屏中断等等。。。。
下面谈谈如何使用中断
1、 进行中断初始化(以按键为例)
A、 设置中断源
B、 设置中断控制寄存器
C、 打开总开关
首先找到中断源,在地板手册上面可以看到
同时在核心板上面可以找到
可以知道GPN是控制按键的,那么设置中断控制源头的代码就是:
然后接下来需要配置中断控制器:
所以可以得出设置中断寄存器的代码
继续,总开关是否打开?
总中断的开关需要看cpsr程序状态控制寄存器如下
设置代码如下:
注意:CPU每执行一条指令之前都会判断是否会有中断发生
若果有中断发生:硬件会执行
1、 CPU进入IRQ中断;
2、 之前的Cpsr保存到spsr_irq
3、 使用当前模式下面的R13/R14_irq
4、 把下一条指令的地址存到R14_irq
5、 跳到0x18处执行
软件会执行:
1、 保存现场
2、 处理中断
A、 分辨中断
B、 调用相应的处理函数
3、 恢复现场
LR存放的是发生中断是那条指令的下一条指令地址,先看保存现场指令
为了更深入理解,我给个图解
最后一步还需要清除中断:
清中断源
清中断控制器
清除代码如下
这就是我的第一个中断程序