中断和异常
M0内核
Mikko丶
深谙淡然,静赏花开。
展开
-
对于Cortex-M0内核的中断的抢占和嵌套的理解
首先,我们需要理清楚 异常 和中断 的关系:异常 是能够引起程序流偏离正常流程的事件,当异常 发生的时候,正在执行的程序就会处于挂起状态,处理器转而执行一块与该事件相关的代码块(异常处理)事件 可以是外部输入也可以是内部产生,外部产生的事件被称为 中断或者中断请求(IRQ),微控制器的中断可以由片上外设或者软件产生异常嵌套 异常或被划分为多个优先级,在执行低优先级的异常时,更高...原创 2020-03-05 10:45:05 · 2099 阅读 · 0 评论 -
异常入口流程的细节
当异常发生时,以下的情况会随之发生:1 压栈,并且栈指针更新;2 处理器取出异常向量并且将其写入PC3 寄存器更新(LR、IPSR和NVIC寄存器)压栈当异常发生时,八个寄存器会被自动压栈这些寄存器包括R0-R3,R12,R14(链接寄存器),返回地址(下一条指令的地址或程序计数器),程序状态寄存器(xPSR)。将寄存器R0-R3,R12,PC,LR和xPSR保存到栈中的原因是,这...原创 2019-12-24 14:10:48 · 298 阅读 · 0 评论 -
向量表以及异常流程概述
1 对于Cortex-M0处理器,内置的中断控制器NVIC支持向量中断,这就意味着不同中断的异常向量是独立的,而且中断服务程序的入口自动分配,无需软件干预。2 异常向量的存储顺序同异常编号一致。3 由于Cortex-M0处理器只支持几个系统异常,所以向量表中的某些空间没有使用。接收异常请求需要满足以下几个条件:1 对于中断和Systic中断请求,中断必须使能2处理器正在执行的异常处理...原创 2019-12-24 11:38:42 · 1076 阅读 · 0 评论 -
中断服务函数与函数调用的区别
在《微机原理》和《计算机组成》等课程[1-4]教学中(本文以MCS-51单片机为例),中断过程既是教学难点又是教学重点,它与主程序调用子程序过程有一定相似性,但又有很大区别,调用子程序过程相对比较容易掌握,通过把两过程结合起来,采用比较教学方法,能收到了很好的教学效果。1、两过程定义与作用子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。...原创 2019-12-23 17:02:02 · 5374 阅读 · 0 评论 -
中断调用与子程序调用
1、两过程定义与作用 子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,子程序执行完后,返回指令就返回主程序断点...转载 2019-12-23 16:52:47 · 2544 阅读 · 0 评论 -
异常优先级的定义
抢占从当前正在运行的任务切换到异常处理的过程叫做抢占。原创 2019-12-20 14:09:39 · 947 阅读 · 0 评论 -
Cortex-M0的异常类型
通常的作法是,异常会被划分为多个优先等级,在执行低优先级的异常处理时,更高优先级的异常可以被触发并且执行,这个过程一般被称作***异常嵌套***。异常的优先级可以是可编程的,也可以是固定的。除了优先级的设置,有些异常(包括多数的中断)可以由软件禁止或使能。Cortex-M0处理器内置了中断控制器,并且支持最多32个中断请求(IRQ)输入,以及1个不可屏蔽中断(NMI)输人。根据微控制器产品设计的...原创 2019-12-19 15:16:54 · 363 阅读 · 0 评论