【手把手教你学51单片机】中断的优先级

news2024/11/16 5:32:00

注:本文章转载自《手把手教你学习51单片机》!因转载需要原文链接,故无法选择转载!
如若侵权,请联系我进行删除!上传至网络博客目的为了记录自己学习的过程的同时,同时能够帮助其他一同学习的小伙伴!

中断的优先级

中断优先级的内容,大概先通过我的介绍大概了解以下即可,后边实际应用的时候我们再详细讲解。
在讲中断产生背景的时候,我们仅仅讲了看电视和烧水的例子,但是实际生活当中还有更复杂的,比如我正在看电视,这个时候来电话了,我要进去接电话的"中断"程序中去,就在接电话的同时,听到了水开的声音,水开的"中断"也发生了,我们就必须放下手上的电话,先把煤气关掉,然后再回来听电话,最后听完了电话再看电视,这里就产生了一个优先级的问题。
还有一种情况,我们在看电视的时候,这个时候听到水开的声音,水开的"中断"发生了,我们要进去关煤气的"中断"程序
当中,而在关煤气的同时,电话声音响了,而这个时候,我们的处理方法是先把煤气关闭,再去接听电话,最后再看电视。
从这两个过程中,我们可以得到一个结论,就是最最紧急的事情,一旦发生后,我们不管当时在哪个"程序"中,我们必须先去处理最最紧急的事情,处理完毕后再去解决其他事情。在我们的单片机程序当中有时候也是这样的,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,在本章节我们先简单介绍一下相关寄存器,不做例程说明。

中断优先级有两种,一种是抢占优先级,一种是固有优先级

先介绍抢占优先级。来看表6-4和表6-5
20230122_1
IP这个寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是0,当我们把某一位设置为1的时候,这一位的优先级就比其他位的优先级高了 。比如我们设置了PT0位为1后,当单片机在主循环或者其他任何中断程序中执行时,一旦定时器T0发生中断,作为更高的优先级,程序马上就会跑到T0的中断程序中来执行。反过来,当单片机正在T0中断程序中执行时,如果有其他中断发生了,还是会继续执行T0中断程序,直到把T0中断程序执行完毕以后,才会去执行其他中断程序。
当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。
所以抢占的概念就是:
优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。
当然反过来,优先级低的中断是不能打断优先级高的中断的。
那么既然有抢占优先级,自然也就有非抢占优先级了,也称为固有优先级。在表6-3中的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。 从表中可以看到一共有1~6共6级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到相应。既然不能抢占,那么这个优先级有什么用呢?
答案是:多个中断同时存在时的仲裁。
比如说有多个中断同时发生了,当然实际上发生这种情况的概率极低,但另外一种情况就常见的多了,那就是**处于某种原因我们暂时关闭了总中断,即EA = 0,执行完一段代码后又重新使能了总中断,即EA = 1,那么在这段时间里就很可能有多个中断都发生了,但因为总中断是关闭的,所以它们当时都得不到相应,而当总中断再次使能后,它们就会在同时请求响应了,很明显,这时也必须有个先后顺序才行,这就是非抢占优先级的作用了——如表6-3中,谁优先级最高先相应谁,然后按编号排队,依次得到相应。
抢占优先级和非抢占优先级的协同,可以使单片机中断系统有条不紊的工作,既不会无休止的嵌套,又可以保证必要时紧急任务得到优先处理。在后续的学习中,中断系统会与我们如影随形,处处都有它的身影,随着学习的深入,相信你对它的理解也会更加的深入。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第四十三章 动态规划——最长单调序列模型

第四十三章 动态规划——最长单调序列模型一、最长单调序列模型1、模型母题2、思路分析(两种方法:DP,贪心)二、模型的应用1、AcWing 1017. 怪盗基德的滑翔翼(1)问题(2)分析&#xff…

C规范编辑笔记(十四)

往期文章: C规范编辑笔记(一) C规范编辑笔记(二) C规范编辑笔记(三) C规范编辑笔记(四) C规范编辑笔记(五) C规范编辑笔记(六) C规范编辑笔记(七) C规范编辑笔记(八) C规范编辑笔记(九) C规则编辑笔记(十) C规范编辑笔记(十一) C规范编辑笔记(十二) C规范编辑笔记(…

Linux进程学习【一】

✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Perseverance is not a long race; it is many short races one after another…

Linux基本功系列之rename命令实战

文章目录一. rename 命令介绍二. 语法格式及常用选项三. 参考案例3.1 将当前目录下所有.cfg的文件,替换为.txt结尾3.2 将所有出现mufeng的部分都替换为mufeng13.3 将mufeng0开头都变成mufeng00开头3.4 rename支持正则表示式总结前言🚀🚀&…

2023-1-22 刷题情况

积水面积 先祝大家新年快乐,新的一年,万事如意。 题目描述 一组正整数,分别表示由正方体叠起的柱子的高度。若某高度值为 xxx,表示由 xxx 个正立方的方块叠起(如下图,0≤x≤50000 \le x \le 50000≤x≤5…

卷积神经网络进阶--基础知识

卷积神经网络进阶 b站课程链接碳基生物都能学会的神经网络(跳着看的) 因为我用的是pytorch,而该课程是用tenserflow的,所以主要记了一下理论 为什么要讲不同的网络结构 不同的网络结构解决的问题不同不同的网络结构使用的技巧不同…

【人工智能原理自学】卷积神经网络:打破图像识别的瓶颈

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解卷积神经网络:打破图像识别的瓶颈,一起卷起来叭! 目录一、手写体识别二、“炼丹”一、手写体识别 在机器学习、神经网络领域&#…

【数据分析】(task4)数据可视化

note matplotlib的四个容器: Figure:顶层级,用来容纳子 Axes,一组具体绘图元素和画布(canvas)。 画板。Axes:matplotlib宇宙的核心,容纳了大量元素用来构造一幅幅子图,一…

【QT5.9】与MFC对比学习笔记-感悟篇【2023.01.22】

简介 在公司从事MFC的程序维护一年两个月,期间因为公司被QT告侵权对QT产生了抵触的心情。现在无奈要用到,需要抓紧学习了。 正文 1.数据模型 先说下刚用到的模型,模型也叫数据模型,也就是耳熟的MVC架构中的M(Model…

我用笨办法啃下了一个开源项目的源码!

目录 1、从最简单的源码开始:别幻想一步登天 2、循序渐进:先搞定底层依赖的技术 3、一定要以Hello World作为入口来阅读 4、抓大放小,边写注释边画图 5、反复三遍,真正理解源码 6、借力打力,参考源码分析书籍及博客 7…

研一寒假C++复习笔记--引用的使用

​​​​​​​ 目录 1--引用的基本语法 2--引用的注意事项 3--在函数参数中使用引用 4--引用作函数的返回值 5--引用的本质 6--常量引用 1--引用的基本语法 引用相当于给变量起别名&#xff0c;其基本语法如下&#xff1a; 数据类型 &别名 原名 # include <…

Linux操作系统之进程信号

代码存放在&#xff1a;https://github.com/sjmshsh/System-Call-Learn/tree/master/signal 我们先来看一张图&#xff0c;了解一下通过阅读本博客&#xff0c;你可以收获什么。 背景知识 首先我说明一点 信号 ! 信号量 我们这篇文章讲解的是信号&#xff0c;不是信号量 信…

POJ3263. Tallest Cow题解(c++ 前缀和)

POJ3263. Tallest Cow 传送门&#xff1a;Tallest Cow 题目&#xff1a; 有N头牛站成一行。两头作能够相支看见&#xff0c;当且仅当它们中间的牛身高都比它们矮。现在&#xff0c;我们只知道其中最高的牛是第P头&#xff0c;它的身高是H&#xff0c;不知道剩余N-1头牛的身高。…

大数据之Kafka高级知识点

文章目录前言一、分片和副本机制&#xff08;一&#xff09;分片机制&#xff08;二&#xff09;副本二、Kafka如何保证数据不丢失&#xff08;一&#xff09;Producer生产者&#xff08;二&#xff09;Broker&#xff08;三&#xff09;Consumer消费者三、消息存储和查询机制总…

重新设计 TCP 协议

看一段关于 TCP 协议的历史讨论&#xff0c;源自&#xff1a;The design philosophy of the DARPA internet protocols 读这段文字时&#xff0c;你可能觉得这不是在谈 TCP&#xff0c;而是在创造一个新协议&#xff0c;但事实上这就是 TCP 在被创造过程中真实的纠结。 现在来…

Java知识点细节简易汇总——(6)面向对象编程(中级部分)

一、IDE快捷键 删除当前行, 默认是 ctrl Y 自己配置 ctrl d复制当前行, 自己配置 ctrl alt 向下光标补全代码 alt /添加注释和取消注释 ctrl / 【第一次是添加注释&#xff0c;第二次是取消注释】导入该行需要的类 先配置 auto import , 然后使用 altenter 即可快速格式化…

Day867.事务隔离 -MySQL实战

事务隔离 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于事务隔离的内容。 提到事务&#xff0c;肯定不陌生&#xff0c;和数据库打交道的时候&#xff0c;总是会用到事务。 最经典的例子就是转账&#xff0c;你要给朋友小王转 100 块钱&#xff0c;而此时你的银行…

[前端笔记——CSS] 10.层叠与继承、选择器

[前端笔记——CSS] 10.层叠与继承、选择器1.层叠与继承1.1 冲突规则1.2 继承1.3 层叠1.4 CSS位置的影响2.选择器2.1 选择器是什么&#xff1f;2.2 选择器列表2.3 选择器的种类类型、类和 ID 选择器标签属性选择器伪类与伪元素运算符选择器参考表1.层叠与继承 1.1 冲突规则 CS…

一起自学SLAM算法:8.1 Gmapping算法

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; 下面将从原理分析、源码解读和安装与运行这3个方面展开讲解Gmapping 算法。 8.1.1 Gmapping原理分析 首先要知道&#xff0c;Gmapping是一种基于粒子滤波的算法。在7.7.2节中已经提到过用RBPF&#xff08;Rao-…

linux系统中使用QT实现APP开发的基本方法

大家好&#xff0c;今天主要和大家分享一下&#xff0c;如何使用QT进行APP的主界面开发的方法。 目录 第一&#xff1a;APP界面开发基本简介 第二&#xff1a;滑动界面实现 第三&#xff1a;APP界面开发实现 第四&#xff1a;APP主界面测试 第一&#xff1a;APP界面开发基本…