Cortex - M处理器异常与中断处理详解
1. 外设中断操作基础概念
在使用中断进行外设控制操作的基本场景中,软件必须包含以下内容:
- 初始化外设并设置处理器系统中中断控制器的代码序列。
- 当外设事件发生时执行的一段代码,称为中断服务例程(ISR),也被称为中断或异常处理程序。
- 向量表中的正确条目,其中包含ISR的起始地址。
这些都是编译后程序映像的一部分。在将外设投入运行之前,需要设置中断控制器以处理中断事件。对于Cortex - M处理器,软件可以为中断请求(IRQ)定义优先级,以便在多个IRQ同时到达时,仲裁硬件可以优先服务高优先级的外设。当然,外设也需要进行设置。
当外设或硬件需要服务时,通常会发生以下序列:
1. 外设向处理器发出IRQ信号。
2. 处理器暂停当前执行的任务。
3. 处理器执行ISR以服务外设,并且ISR可以根据需要清除IRQ信号。
4. 处理器恢复之前暂停的任务。
为了恢复被中断的程序,异常序列需要一种存储被中断程序状态的方法,以便在异常处理程序完成任务后恢复该状态。一般来说,这可以通过硬件机制或硬件和软件操作的组合来实现。在Cortex - M处理器中,当接受异常时,一些寄存器会自动保存到堆栈中,并在异常返回序列中自动恢复。这种机制允许将异常处理程序编写为普通的C函数,而无需添加额外的软件步骤来保存和恢复寄存器。
所有Cortex - M处理器都提供了一个嵌套向量中断控制器(NVIC)来处理中断和异常。Armv8 - M处理器中的NVIC与早期版本的Cortex - M处理器中的NVIC类似,虽然有一些功能增强,但程序员模型是一致
超级会员免费看
订阅专栏 解锁全文
26

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



