嵌入式系统中的异常和中断

目录

概述

1 异常和中断的概念

1.1 异常

1.1.1 同步异常

1.1.2 异步异常

1.2 中断

2 了解异常和中断

2.1 可编程中断控制器和外部中断

2.2 异常的分类

2.3 异常的优先权 

2.4  中断和异常处理

3 处理一般异常的方法


概述

本文主要介绍嵌入式系统中的异常和中断的一些知识和概念,这些知识点对于深入认识MCU和操作系统的运行原理有一个比较深刻的了解,对实际编程时非常有帮助的。

1 异常和中断的概念

1.1 异常

异常是指任何打断MCU正常执行,并且破事MCU进入一个又特殊指令执行的事件。异常分为两类。

1.1.1 同步异常

由内部事件引起的异常,称之为同步异常,例如:

1)读写内存的错误

2)零除运算引起的错误

1.1.2 异步异常

由外部事件引起的异常,称之为异步异常。典型的实例如下:

1)按下嵌入式板卡上的复位按钮,系统复位

2)MCU使用外部中断触发接收数据

1.2 中断

中断也被称之为外部中断,它是由外部硬件引起的异步异常。严格的说,中断也是异常的一个类型。中断时硬件与嵌入式MCU进行通信的一种重要的方式。其在嵌入式系统中应用非常广泛。

2 了解异常和中断

一般异常具有分类,并且基于分类的特点,给定优先权。外部中断也有优先级之分,它由MCU内核强加大,可进行编程分配。

2.1 可编程中断控制器和外部中断

对于MCU而言,其可能由多个中断源,并且每一个中断源被设置过优先级别。并且,在MCU内部有一个专门的中断控制器( PIC),其主要作用如下:

1)给每个中断源分配中断优先级

2)判断中断的准确来源,降低核心CPU的负载压力

2.2 异常的分类

异常可以分为如下类型:

1)异步-不可屏蔽类型:不可以被软件enable / disable 的异步异常

2)异步-可屏蔽类型:可以被软件enable / disable 的异步异常

3)同步-精确类型:MCU程序计数器知道哪里出现问题,并且知道从哪里恢复运行。

4)同步-不精确类型:程序计数器不能确切的知道犯错误的指令,进而也无法处理该异常。

2.3 异常的优先权 

异常的最高优先级通常留给系统复位

从应用程序的观点看,所有异常具有比操作系统对象更高的优先权,包括任务、队列和信号灯。

2.4  中断和异常处理

在嵌入式系统中,所有任务对象都有一个任务控制块(TCB)

 当发生任务上下文切换时,活动的堆栈指针(sp)重新初始化活动任务的栈指针。

3 处理一般异常的方法

MCU处理一般异常的步骤如下:

1) 存储处理器当前的状态

2)把异常或者中断函数装入程序计数器

3)把控制转移到处理程序函数中,并开始执行

4)在处理程序函数运行完之后,回复处理器之前的状态

5)从异常或中断返回,恢复跳转前的运行状态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/700769.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

B站画质补完计划(3):智能修复让宝藏视频重焕新生

1 老片存在什么画质问题? B站作为一个拥有浓厚人文属性的平台社区,聚集了诸如《雍正王朝》、《三国演义》等经典影视剧集,同时也吸引了大量用户欣赏、品鉴这些人文经典 。但美中不足的是,由于拍摄年代久远、拍摄设备落后、数据多次…

信息系统项目管理师0151:输出(9项目范围管理—9.4收集需求—9.4.3输出)

点击查看专栏目录 文章目录 9.4.3 输出9.4.3 输出 需求文件 需求文件描述各种单一需求将如何满足项目相关的业务需求。一开始可能只有高层级的需求,然后随着有关需求信息的增加而逐步细化。只有明确的(可测量和可测试的)、可跟踪的、完整的、相互协调的,且主要干系人愿意认…

Json-server 的使用教程

目录 前言一、简介二、安装与配置1. 安装 node-js2. npm 镜像设置3. 安装 json-server 三、使用1. 创建本地数据源2. 启动 Json Server3. 操作数据(1)查询数据(2)新增数据(3)修改数据(4&#xf…

swift微调牧歌数据电商多模态大语言模型

大规模中文多模态评测基准MUGE_数据集-阿里云天池多模态理解和生成评估挑战榜(MUGE)是由阿里巴巴达摩院智能计算实验室发起,由阿里云天池平台承办,并由浙江大学、清华大学等单位共同协办。 Mhttps://tianchi.aliyun.com/dataset/107332微调的是牧歌数据集,结果都不好,记录…

数据结构(DS)学习笔记(二):数据类型与抽象数据类型

参考教材:数据结构C语言版(严蔚敏,杨伟民编著) 工具:XMind、幕布、公式编译器 正在备考,结合自身空闲时间,不定时更新,会在里面加入一些真题帮助理解数据结构 目录 1.1数据…

适配器模式和装饰器模式

文章目录 适配器模式1.引出适配器模式1.多功能转换插头2.基本介绍3.工作原理 2.类适配器1.基本介绍2.类图3.代码实现1.Voltage220V.java2.Voltage5V.java3.VoltageAdapter.java4.Phone.java5.Client.java6.结果 4.类适配器的注意事项 3.对象适配器1.基本介绍2.使用对象适配器改…

Linux/Windows 安装 RocketMQ 详细图文教程!

Linux 安装 RocketMQ 首先,你需要从RocketMQ的官方网站或GitHub仓库下载最新的RocketMQ发行版下载安装,官网下载地址:https://rocketmq.apache.org/download/。 接下来配置环境变量: 输入vim /etc/profile命令配置环境变量输入i进…

人工智能强化学习:核心内容、社会影响及未来展望

欢迎来到 Papicatch的博客 文章目录 🐋引言 🐋强化学习的核心内容 🦈强化学习基本概念 🐋强化学习算法 🦈Q学习(Q-Learning) 🦈深度Q网络(Deep Q-Network, DQN&…

我在地球学Python基础第一篇:计算机组成原理基本知识和编程语言基础知识

业精于勤荒于嬉,行成于思毁于随。 今天开始系统记录学习Python 第一篇 计算机组成原理一、什么是计算机二、计算机是由什么组成的?2.1 硬件系统2.2 软件系统 三、计算机如何处理程序?四、编程语言 计算机组成原理 学习目标: 1、…

python怎么保留小数

保留两位小数,并做四舍五入处理 方法一:使用字符串格式化 a 12.345 print("%.2f" % a)# 12.35 方法二:使用round内置函数 a 12.345 a1 round(a, 2) print(a1)# 12.35 方法三:使用decimal模块 from decimal import D…

企业级开源项目,云缓存解决方案:CacheCloud

CacheCloud:简化缓存管理,释放数据潜力- 精选真开源,释放新价值。 概览 CacheCloud是由搜狐视频团队开发的一款开源的Redis缓存云平台,支持Redis多种架构(Standalone、Sentinel、Cluster)高效管理、有效降低大规模redis运维成本&…

AI网络爬虫:批量爬取AI导航网站Futurepedia数据

Futurepedia致力于使AI技术对各行各业的专业人士更加可理解和实用,提供全面的AI网站和工具目录、易于遵循的指南、每周新闻通讯和信息丰富的YouTube频道,简化AI在专业实践中的整合。如何把Futurepedia上的全部AI网站数据爬取下来呢? 网站一页…

Linux基础(2)基础命令与vim

文件的复制和移动 cp 拷贝文件和目录 cp file file_copy --> file 是目标文件,file_copy 是拷贝出来的文件 cp file one --> 把 file 文件拷贝到 one 目录下,并且文件名依然为 file cp file one/file_copy --> 把 file 文件拷贝到 one 目录下…

分布式安装安装LNMP_......

分布式安装安装LNMP LNMP是什么Nginx源码编译安装准备工作关闭安全防护配置上传源码包并解压安装编译源码依赖包创建运行用户 编译安装预配置安装选项编译源代码&&安装 配置优化优化路径添加 Nginx 系统服务 Mysql源码编译安装准备工作关闭安全防护配置卸载mariadb上传…

孟德尔随机化R包:TwoSampleMR和MR-PRESSO安装

1. 孟德尔随机化R包 看一篇文章,介绍孟德尔随机化分析,里面推荐了这两个R包,安装了解一下: Methods:Genome-wide association study (GWAS) data for autoimmune diseases and AMD were obtained from the IEU Open GWAS databas…

@JsonValue和@JsonCreator使用

当实体类中的属性为枚举类型时,将其序列化成json字符串传给前端,传递的应该是有效的值而不是枚举常量。 1. Get-Started Data public class Student {private Long id;private String userName;private String telephone;private String email;private …

VMware Workerstation开启虚拟机后,产生乱码名称日志文件

问题情况 如下图所示,我的虚拟机版本是16.1.2版本,每次在启动虚拟机之后,D盘目录下都会产生一个如图下所示的乱码名称文件。同时,虚拟机文件目录也是杂乱不堪,没有按照一台虚拟机对应一个文件夹的形式存在。 问题处理…

上位机图像处理和嵌入式模块部署(h750 mcu和图像处理)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们说过,h750和之前的103、407相比较,本身cpu频率比较高,flash大小一般,但是ram比较大&#x…

flink standalone部署模式

standalone模式可以在单台机器以不同进程方式启动,也可以以多机器分布式方式启动。 任务的提交模式有三种:application mode、session model、per-job mode(1.4x版本后过时)。 注意区分任务的提交模式与集群的部署模式区别。 以…

【Qt】文件操作

文章目录 1 :peach:Qt 文件概述:peach:2 :peach:输入输出设备类:peach:3 :peach:文件读写类:peach:4 :peach:文件和目录信息类:peach: 1 🍑Qt 文件概述🍑 文件操作是应⽤程序必不可少的部分。Qt 作为⼀个通⽤开发库,提供了跨平台的⽂件操作能…