接下来就是中断了,记得我有个同学说,你没有搞懂中断说明你没有学单片机,是呀,中断确实是单片机的精华部分,废话不多说,直接进入正题:
中断也是一种异常模式,这在我们上一节的异常学习中就知道了。
中断有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存放的是发生中断是那条指令的下一条指令地址,先看保存现场指令

为了更深入理解,我给个图解
最后一步还需要清除中断:
清中断源
清中断控制器
清除代码如下

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

本文深入探讨单片机中断机制,从初始化、配置到处理流程及清除中断,全面解析中断在单片机中的应用。

1621

被折叠的 条评论
为什么被折叠?



