嵌入式系统中的中断与定时器详解
1. 中断的概念与类型
中断是一种高效处理与CPU异步且速度较慢的外设的方式。当发生中断时,会设置一个标志位,并等待CPU进行处理,此时中断处于“挂起”状态。CPU会在完成当前指令后才会处理中断,处理时会停止主程序的执行,转而执行专门针对触发该中断请求(IRQ)的外设的中断服务程序(ISR)。
中断分为三类:
- 系统复位 :优先级最高,没有开发者编写的ISR,而是将所有配置寄存器初始化为默认值,并将主程序的起始地址放入程序计数器(PC)。
- 不可屏蔽中断(NMI) :优先级次之,处理内存访问或振荡器故障,也能处理来自外部信号的用户中断。NMI始终启用,执行开发者编写的ISR。
- 可屏蔽中断 :有局部和全局使能。局部使能针对每个可触发中断的外设功能,全局中断使能是状态寄存器(SR)中的GIE位。只有当局部使能和GIE都置位时,中断才会激活。
2. 中断的处理流程
当IRQ发生时,CPU会自动将PC和SR压入栈中,以保存主程序的运行状态。在ISR结束时,开发者必须使用 reti 指令将SR和PC从栈中弹出,使执行返回主程序。
中断可以相互嵌套。系统复位和NMI始终启用,高优先级的IRQ可以中断低优先级的IRQ。当可屏蔽中断发生时,CPU会自动清除SR,禁用其他可屏蔽中断。如果开发者希望允许嵌套可屏蔽中断,需要在ISR中显式设置GIE位,不过更好的方法是编写简短的ISR,并让IRQ优先级方案处理ISR的执行顺序。
超级会员免费看
订阅专栏 解锁全文
465

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



