【专题2: 嵌入式stm32】 之 【6.中断和异常】

2023-05-16

嵌入式工程师成长之路 系列文章 总目录
系列文章总目录
希望本是无所谓有,无所谓无的,这正如脚下的路,其实地上本没有路,走的人多了,也便成了路
原创不易,文章会持续更新,欢迎微信扫码关注公众号
承接 小程序 / 嵌入式 / PC端项目开发,联系作者

在这里插入图片描述

1.异常和中断的区别

中断是异常的一种,是没有那么异常的异常。中断是一个我们知道当发生了这种异常后怎后做的异常,而预取址异常,这就是真正的异常;发生了这个异常之后我们也不知道怎样去处理,系统直接跑飞。

2.异常向量表

在这里插入图片描述
异常向量表都是硬件事先实现了的,是设计cpu时就确定了的,也就是说,只要某个异常出现,CPU就会自动的跳转到向量表对应的地址处去执行代码。譬如,当发生系统复位异常时,CPU就会自动的跳转到0x00地址处去执行程序。

所以当我们一上电之后CPU就会自动的去执行0x00处的启动代码。由上图可知,每一个地址处都只有4个字节,所以这4个字节只是放了一条跳转指令(跳转到真正的代码处开始执行程序)。还要注意,这里面放的不是一条跳转指令本身,而是这条跳转指令的地址(指针的指针)。

3.发生异常时,CPU会自动做的事情

在异常处理过程中一定要搞清楚哪些是CPU自己自动完成的,哪些是需要程序员来完成的。下面的这些都是CPU自动完成的,不需要我们些程序控制的.ARM的异常处理机制如下。
当CPU出现异常时,会自动的做以下事情:
(1)拷贝CPSR到SPSR_mode,SPSR_mode指目标模式下的寄存器。
(2)设置的cpsr位。
(3)改变处理器状态进入arm状态。
(4)改变处理器模式进入相应的异常模式:
(4.1)设置中断禁止位禁止相应中断(如果有需要的话)。
(4.2)保存返回地址到LR_mode。
(4.3)设置PC为相应的异常向量。

当异常返回时,会自动做以下事情(这也是需要做的事情):
(1)从spsr_<mode>恢复cpsr。
(2)从lr_<mode>恢复pc。

4.一级向量表和二级向量表

异常向量表可以称为CPU的一级异常向量表,还有二级向量表,就拿中断来说,A8一共有100多个中断,只要发生中断都会自动的跳转到0x18处执行程序,但是这么多的中断CPU怎样分辨呢?这就是用二级向量表。二级向量表可以用来区分到底是哪个异常发生了,是定时器超时了,还是外部中断发生了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【专题2: 嵌入式stm32】 之 【6.中断和异常】 的相关文章

随机推荐

  • oracle alter table详解

    建测试表 create table dept deptno number 3 primary key dname varchar2 10 loc varchar2 13 create table employee info empno nu
  • 【目录】音视频开发笔记

    音视频开发 基础知识 xff1a 音频基础 音视频开发 基础知识 xff1a 视频简介 音视频开发 基础知识 xff1a 视频封装格式和编码格式 音视频开发 基础知识 xff08 1 xff09 音视频开发 基础知识 xff08 2 xff
  • 串口通信之(一)获取传感器数据(modbus rtu master)

    一天领导拿了几个传感器设备丢给我 xff0c 给我把这些数据取到 我一看 xff0c 好家伙 这是要搞硬件了啊 那就搞他丫的 可是 xff0c 怎么搞是个问题 我是一头雾水 还好 xff0c 和传感器丢给我的 xff0c 还有传感器厂家一起
  • 小觅深度版-realsense系列,深度相机对比

    本文为CSDN原创文章 xff0c 转载请注明出处 本文为CSDN原创文章 xff0c 转载请注明出处 本文对比了目前小觅生产的深度版 xff08 120 xff09 相机 Realsense D435以及 Realsense ZR300
  • VIO单目评测算法:A Benchmark Comparison of Monocular Visual-Inertial Odometry Algorithms for Flying Robots

    A Benchmark Comparison of Monocular Visual Inertial Odometry Algorithms for Flying Robots 飞行器单目VIO算法测评 算法方面总结 xff1a MSCK
  • LVM调整home剩余空间到root分区

    注意 xff1a 1 此方法为LVM逻辑卷调整 xff0c 请确认是否为逻辑卷分区 xff0c 且文件系统格式为ext4或者xfs 2 减少home分区会将home分区格式化 xff0c 请先备份home分区 xff0c 但是放心增加的ro
  • git clone 指定某个分支而不是整个版本仓库

    最近在搭建Gitblit内网仓库时发现一个问题 xff0c git clone 只能clone整个仓库 xff0c 但是如果我只需要仓库里面的某一个分支 xff0c 这时还需要clone整个仓库就很头疼 xff0c 下面用这个命令就可实现c
  • 十九、I2C驱动及应用

    一 概述 1 Linux主机驱动和外设驱动分离思想 外设驱动 API 主机驱动 板级逻辑 具体的i2c设备 xff08 camera xff0c ts xff0c eeprom等等 xff09 主机驱动 xff1a 根据控制器硬件手册 xf
  • 内核驱动的本质——模块

    内核驱动的本质 模块 在Linux中 xff0c 驱动的本质就是一个模块 模块可以被选择 静态编译 或 模块化编译 1 静态编译 xff1a 链接入内核镜像 xff0c 默认永远被加载 2 模块化编译 xff1a 需要在内核运行时动态加载
  • 【STM32知识点】关于串口接收中断(回调函数)

    串口使用流程 xff1a 1 初始化串口 2 使能中断 xff08 在非阻塞模式下接收一定量的数据 xff09 HAL UART Receive IT UART HandleTypeDef huart uint8 t pData uint1
  • 最近看书少了,以后要多看书

    最近两周的oracle学习都是围绕csdn上oracle板块中遇到的问题 xff1b 看书少了 xff0c 遇到不懂的知识 xff0c 查询书籍 xff0c 查询网络的次数多了 xff1b 于是与电脑一起度过的时间 xff0c 占了大约9
  • 【STM32Cube HAL】定时器中断(四)

    实验内容 xff1a 使用基本定时器 xff0c 实现LED灯以1S间隔进行亮灭切换 一 原理图 二 CubeMX配置 Step1 打开 STM32CubeMX xff0c 点击 New Project xff0c 选择芯片型号 xff0c
  • 【STM32Cube HAL】输入捕获(六)——PWM测量

    对于PWM的捕获 xff0c 我这里一共使用两种方法实现 xff1a 第一种是PWM输入模式 xff0c 采用一个定时器的两个通道 xff08 通道一和通道二 xff09 xff0c 配置从模式为复位模式 xff0c 没有进行溢出处理 xf
  • 【STM32知识点】关于不同外设中断标志位清除的使用笔记(更新中)

    在使用中断函数的时候 xff0c 我们往往忘记在中断服务函数内清除中断标志位而导致一些未知错误 以下我总结了几个外设关于中断标志位的清除问题 定时器 xff1a 1 在程序有使用到中断的情况下 xff0c 定时器在使能之前需要先清除更新中断
  • 【FreeRTOS 应用开发笔记】软件定时器(九)

    一 软件定时器的基本概念 1 硬件定时器和软件定时器的主要区别 定时器 xff0c 是指从指定的时刻开始 xff0c 经过一个指定时间 xff0c 然后触发一个超时事件 xff0c 用户可以自定义定时器的周期与频率 硬件定时器 xff1a
  • 【STM32知识点】STM32基础知识总结

    目录 认识STM32 GPIO外设 一 GPIO的八种工作模式 二 总结在STM32中选用IO模式 RCC时钟 NVIC是嵌套向量中断控制器 一 优先级定义 二 优先级分组 EXTI外部中断 事件控制器 SysTick系统定时器 通讯的基本
  • 【数据结构】排序

    本文主要选取了桶排序 xff0c 冒泡排序 xff0c 以及快速排序 当然还有其他几种 xff0c 可以根据需要进行学习 一 桶排序 1 什么是桶排序 xff1f 桶排序是计数排序的升级版 它利用了函数的映射关系 xff0c 高效与否的关键
  • 【数据结构】栈,队列,链表

    一 队列 队列 xff0c 顾名思义 xff0c 就像排队一样 xff0c 我们只能在队首删除 xff0c 在队尾增加 队列是一种先进先出 xff08 FIFO xff09 的数据结构 队列的存储方式可以使用线性表进行存储 xff0c 也可
  • 【数据结构】树

    一 树 1 什么是树 xff1f 树状图是一种数据结构 xff0c 它是由n xff08 n gt 61 1 xff09 个有限节点组成一个具有层次关系的集合 把它叫做 树 是因为它看起来像一棵倒挂的树 xff0c 也就是说它是根朝上 xf
  • 【专题2: 嵌入式stm32】 之 【6.中断和异常】

    嵌入式工程师成长之路 系列文章 总目录系列文章总目录希望本是无所谓有 xff0c 无所谓无的 xff0c 这正如脚下的路 xff0c 其实地上本没有路 xff0c 走的人多了 xff0c 也便成了路原创不易 xff0c 文章会持续更新 xf