STM32中断优先级处理机制

article/2025/9/15 3:51:08

设置中断时需要配置中断的优先级,STM32将中断优先级分为抢占优先级(也叫先占优先级)和响应优先级(亚优先级或从优先级),每个中断源都需要设定这两种优先级。

当中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时中止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程叫做中断嵌套。什么样的中断能嵌套,什么样的不能嵌套?

1、高抢占优先级的中断可以嵌套低抢占优先级的中断。

2、当两个中断源的抢占优先级相同时,不管这两个中断源的响应优先级谁高谁低,这两个中断将没有嵌套关系,这种情况下当STM32正在处理一个中断时,如果另一个中断到来,这个后到来的中断就要等到前一个中断处理完之后才能被处理。

3、当两个中断源的抢占优先级相同时,并且两个中断同时到达,则中断控制器将根据响应优先级高低来决定先处理哪一个;如果这两个中断的响应优先级也相等,则根据在中断清单表3-1中的排位顺序决定先处理哪一个,序号越小,优先级越高。Cortex-M3内核中定义了8个比特位用于设置中断源的优先级,STM32F103只使用了其中的4个位,这4个位又被抢占优先级和响应优先级共同使用。而抢占优先级和响应优先级各自优先级的级数是可设的,共分为5组,如表3-2所示。无论抢占优先级还是响应优先级遵循数值越小,优先级越高。编写程序时,首先要预先对程序的各个功能模块进行计算论证,开机初始化时一次性设置好优先级分组,以后就再也不动他了,避免同一个程序中使用多个优先级分组。
在这里插入图片描述
根据工程开发经验,在对响应中断优先级没有特殊要求的前提下,初始化时可以将优先级分组设置为NVIC_PriorityGroup_4的方式,即只设置成抢占优先级,或者不设置优先级分组,使用系统默认优先级。当需要中断嵌套时,通过设置抢占优先级区分中断高低优先级;当不需要中断嵌套时,设置成相同的抢占优先等级,那么STM32将会按照表3-1中的默认排位顺序决定其响应优先级的高低,确定先处理哪一个中断。

注意:【抢占优先级的中断才可以可以嵌套】


http://chatgpt.dhexx.cn/article/qYG243QR.shtml

相关文章

STM32-中断优先级管理NVIC详解

中断和NVIC详解 1,什么是中断?2,中断、异常、事件三者的区别3,中断由谁管理?NVIC中断优先级中断相关函数 4,外部中断使用示例 1,什么是中断? 举个简单的例子,你正在打王者…

STM32——中断概览(中断优先级)

中断是指计算机运行过程中,出现某些意外情况需要主机干预时,机器能够自动停止正在运行的程序并转入处理新情况的程序,处理完毕后有返回原来被暂停的程序继续运行 STM32的中断和异常 (1)对于异常和外部中断的功能&…

stm32——中断优先级管理

1.NVIC中断优先级分组 1.CM3内核支持256个中断, 其中包含16个内核中断和240个外部中断,并且具有256级的可编程中断设置。 2.STM32并没有使用CM3内核全部的东西,而是只用了他其中的一部分。 3.STM32有84个中断,包括16个内核中断…

STM32中断设置以及中断优先级设置

最近,在做一个智能锁的项目,由于,今天碰到了一个关于中断的问题,因此,又回来好好啃一下中断配置的知识,俗话说:磨刀不误砍柴工。问题是什么呢?项目中我用到了一个触摸键盘TTP229&…

Java基础——this和super关键字

🏡个人主页 : 守夜人st 🚀系列专栏:java …持续更新中敬请关注… 🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点 ​ ✈️推荐一款模拟面试,刷题…

super 关键字详解

super 关键字主要有三个作用: 从子类访问父类的成员变量从子类访问父类的成员方法从子类构造器访问父类的构造器 下面我将从这三个方面做一些细节说明和注意事项。 从子类访问父类的成员变量 使用 super 关键字从子类访问父类的成员变量需要遵循访问修饰符的限制…

super关键字的使用详解

目录 一、super关键字 二、super关键字的是三种用法 1、super.父类成员变量 2、super.父类成员方法 3、super();调用父类构造方法 一、super关键字 super关键字和this关键字用法比较相似。通俗讲创建一个子类和父类,super在子类中可以引用父类内容&…

Java——super关键字

1、super是关键字,全部小写。 2、super和this对比: this: this能出现在实例方法和构造方法中。 this的语法: “this.” 、 “this ()” this不能使用在静态方法中。 this.大部分情况下可以省略,在区分局部变量和实例变…

Java中super关键字详解

Java中super关键字详解 super有什么用?super什么时候不可以省略呢?super在内存图中是如何存在的呢?super使用时的注意事项 super有什么用? (1)当子类中构造方法第一行没有super时,会默认第一行有一个super()&#xff…

java语言之super关键字详解

文章目录 前言 一、super介绍二、super的语法三、super内存图四、super小结 前言 你第一次遇到super关键字是什么时候呢?是不是使用IDEA或者eclipse快捷键生成类构造方法的时候出现在构造方法第一行的super()语句呢?在没有了解super关键字之前&#xff…

super 关键字的作用

super 关键字的作用 super 代表父类对象,在子类中访问父类成员 访问父类构造方法 在子类方法中调用且必须是第一句 正文 super 关键字与 this 关键字是不一样的,this 表示当前对象,而 super 关键字代表的是父类对象在程序中,它通常…

super关键字的使用

1、super 概念 指的是:父类的 2、super可以修饰属性,可以修饰方法 在子类的方法中,可以通过 super.属性 super.方法 的方式,显示的去调用父类提供的属性,方法。在通常情况下,super.可以省略不写&#xf…

super关键字

一,什么是super关键字及其作用 super主要是在继承关系下 存在于子类方法中,用于指向子类对象中父类对象。 二,super关键字的三种用法及其在构造方法中的注意事项 1:super.父类的成员变量 (1)如下代码所…

Qt开源炫酷界面QCoolPage

背景介绍 做开发有大概三年时间了,先后做过MFC,上位机(Qt),游戏服务端(C),HTTP客户端(Qt)以及使用Qt做精美UI架构,也是积累了一些Qt方面的心得&a…

QT之界面布局

1. Qt界面布局 Qt的界面布局大致分为三类:水平布局、垂直布局、栅格布局(以下示例图出自一位灵魂画师) 水平布局 垂直布局 栅格布局 2. 我们为什么需要界面布局 1. 美观 美观是显而易见的,我们通过一个简单地示例来演示一…

Qt界面设计总结

1. 子窗体或控件,重写paintEvent事件,画边框、背景、文字、图片效果比较好。用paintEvent 事件画边框,用QPalette设置背景。 // 画边框 QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(…

Qt的ui界面操作

界面布局 界面布局的美化:拖拽widget,进行布局:水平布局、垂直布局、栅格布局;以及打破布局等。默认窗口和控件之间有9像素间隙,可以调整layoutLeftMargin 等属性若要使得widget大小和控件大小一样大,可以…

Qt界面开发(二)

首先给一个福利,学习qtQuick好的github地址。 https://github.com/zhengtianzuo/QtQuickExamples 效果图: 1.计划日历 下载地址:https://download.csdn.net/download/zhangxiaoyu_sy/10436208 2.无边框界面 下载地址:https://download.csdn.net/download/zhangxia…

Qt如何调用建立好的ui界面

在我们刚才学习qt的时候,很多的时候,按照新建立的工程文件,出现一个困扰。就是如何调用额外建立的UI界面。在这里主要是说明这里的面的关键因素。其实学习qt,如果之前有过学过C的同事,那么就学习qt就会很容易上手。因为…

Qt实战案例(13)——Qt的界面外观详细介绍

目录 一、Qt风格1.1 对风格进行预览1.2 风格使用 二、Qt样式表2.1 使用代码设置样式表2.2 在设计模式中设置样式表2.3 Qt样式表的语法2.4 子控件(Sub-Controls)2.5 伪状态(Pseudo-States)2.6 继承2.7 qss2.8 代码示例 三、特殊效果…