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

2023-10-26

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

STM32的中断和异常

(1)对于异常和外部中断的功能,对于STM32单片机而言,是由芯片内的Cortex-M内核提供支持,这部分功能时有ST公司在Cortex-M内核上拓展或修改而来的

(2)异常和中断概念相近,异常可以说是内核活动产生(比如执行指令出错),中断一般是指,有连接到内核的外部器件(外设)产生(比如外设产生中断,提示数据传输完成),它们的触发或者说处理机制相同,使用中并不严格区分二者

STM32异常和中断一览表

 可以看到,异常都是由编号表示的,并且中断类型也很多,中断存在优先级

中断优先级

(1)中断优先级分为两种,可编程和不可编程,可编程的表示可以自己修改中断优先级,不可编程的就不能修改

(2)对于STM32中断优先级,决定着内核优先响应谁的中断请求

(3)小值优先原则,中断优先级数值越小,中断就会被优先相应

(4)中断优先级按照优先级分组配置

中断优先级分组

以F103为例,STM32上只使用M3内核支持的8bit优先级中的高4位bit,也就是STM32支持2^4个优先级

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
用于表达优先级 未使用,读回为0

在F103上,使用这4个bit,组织成5组优先级分组,每组分为1个抢占组,1个子优先级组

优先级分组 抢占优先级 子优先级 描述
NVIC_PriorityGroup_0 0 0-15 主-0bit,子-4bit
NVIC_PriorityGroup_1 0-1 0-7 主-1bit,子-3bit
NVIC_PriorityGroup_2 0-3 0-3 主-2bit,子-2bit
NVIC_PriorityGroup_3 0-7 0-1 主-3bit,子-1bit
NVIC_PriorityGroup_4 0-15 0 主-4bit,子-0bit

对于组0,抢占优先级为0,表示他没有抢占优先级,4个bit全部用来表示子优先级。对于组1,抢占优先级为0-1,用1个bit表示抢占优先级,其余3个bit表示子优先级...

(1)通过优先级分组,可以管理中断的响应顺序

(2)只有抢占优先级才由抢占中断权限,发生中断嵌套,打断就发生中断嵌套,没有能力打断,那就被挂起

假如事件A抢占优先级为0,B的抢占优先级为10,在B执行过程中,A发出中断请求,则会抢过B中断的使用权,等A执行完毕再继续执行B(ps:如果A并不能打断事件B,A就会被挂起)

(3)如果中断抢占优先级相同,不发生抢占

(4)如果多个挂起的中断具有相同的抢占优先级,则子优先级高的先行,如果子优先级相同,则IRQ(通常指外部中断请求)编号小的先行(IRQ来源例如:stm32f103xe.h)

抢占优先级>子优先级>IRQ编号

 (5)可编程的优先级,通过嵌套向量中断控制器(NVIC)实现

NVIC库函数 描述
void NVIC_EnableIRQ(IRQn_Type IRQn) 使能中断
void NVIC_DisableIRQ(IRQn_Type IRQn) 失能中断
void NVIC_SetPendingIRQ(IRQn_Type IRQn) 设置中断悬起位(发起中断请求,硬件触发)
void NVIC_ClearPendingIRQ(IRQn_Type IRQn) 清除中断悬起位
uint_32t NVIC_GetPendingIRQ(IRQn_Type IRQn) 获取中断悬起编号
void NVIC_SetPriorityIRQ(IRQn_Type IRQn,uint32_t priorty) 设置中断优先级
uint_32t NVIC_GetPriorityIRQ(IRQn_Type IRQn) 获取中断优先级
void NVIC_SystemReset(void) 系统复位

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

STM32——中断概览(中断优先级) 的相关文章

  • post使用form-data和x-www-form-urlencoded的本质区别

    一是数据包格式的区别 二是数据包中非ANSCII字符怎么编码 是百分号转码发送还是直接发送 一 application x www form urlencoded 1 它是post的默认格式 使用js中URLencode转码方法 包括将na
  • 修改onnx模型输出示例

    前言 如图是netron github链接 软件中打开的onnx模型 可以看到右边模型的最终输出结果是分类值predict 0而非概率值 那么如何获取中间过程的概率值 或者说怎么把右边的图砍掉一截变成左边的图呢 代码 读入模型 import

随机推荐

  • keras_cv进行数据增强

    使用keras cv来做分类数据增强 以下直接上流程 具体的原理和代码上github查看源码及配合tensorflow官网及keras官网来做处理 当前 2022 10 8 这些文档还不是很全 import os import numpy
  • Shell 运行shell脚本的多种方法

    详情地址 运行shell脚本的多种方法 小步教程 Shell 运行shell脚本的多种方法 运行shell脚本文件可通过两类方法 方法1 bash执行 语法 sh 文件 文件可使用相对路径或绝对路径 示例 sh 01hello sh 等价写
  • 游戏出现GetThreadContext failed报错 Unity开发

    解决方案 1 检查是否有360 有的情况 1 简单方案 卸载360 2 专业方案 将游戏exe添加到360信任名单中 解释 360会将一些模拟按键视为木马 然后游戏运行一般直接闪退 2 检查防火墙 专业方案 将游戏exe加入防火墙允许应用的
  • 多端技术栈uniapp开发优势是什么?适合哪种类型产品开发?

    uniapp是一种基于Vue js的跨平台开发框架 它可以支持以单一代码库编写多个平台的应用程序 包括iOS Android Web等 以下是uniapp开发的优势和适用类型的介绍 1 跨平台开发 相比于传统的原生开发 uniapp可以基于
  • tar 打包、压缩和备份

    如何理解 首先讲两个概念 打包 将一大堆文件或目录变成一个总的文件 压缩 将一个大的文件通过压缩算法变成一个小文件 这两种场景一定要区分开 网络上有的技术文章 将tar命令解释为压缩命令 是不完全正确的 关于此点 本文不再拓展 感兴趣的可以
  • 黄页是什么意思

    黄页 起源于北美洲 1880年世界上第一本黄页电话号簿在美国问世 至今已有100多年的历史 黄页是国际通用按企业性质和产品类别编排的工商电话号码薄 相当于一个城市或地区的工商企业的户口本 国际惯例用黄色纸张印制 故称黄页 目前我们常说的黄页
  • Python 类型提示和静态类型检查

    介绍 在本文中 将了解 Python 类型检查 Type Checking 在本教程中 将了解以下内容 类型注释和类型提示 将静态类型添加到代码中 包括你的代码和其他人的代码 运行静态类型检查器 在运行时强制类型 视频介绍如下 Python
  • 树莓派软键盘乱码

    树莓派软键盘乱码的快速处理 matchbox keyboard的显示 处理办法 matchbox keyboard的显示 正常的Matchbox keyboard安装完成后应该出现如下的界面 但是 在初次安装时 发现部分用户的界面出现乱码情
  • react,useEffect一直重复执行

    import useState useEffect from react useEffect callback arr useEffect接受两个参数 callback 回调函数 第一次会默认执行一次 内部可以return一个回调函数 当卸
  • 客户端和服务端端口的建立与连接

    socket 建立通信的端口 并返回引用该端口的文件描述符 man sockst https man7 org linux man pages man2 socket 2 html 头文件 include
  • nacos服务中断导致项目无法连接,就算nacos服务恢复也不会自动注册,springboot要如何配置nacos自动重连?...

    您可以在配置文件中 例如 application properties 或 application yml 中添加如下配置来启用 Nacos 自动重连 spring cloud nacos discovery retry enabled t
  • [网络安全提高篇] 一〇九.津门杯CTF的Web Write-Up万字详解(SSRF、文件上传、SQL注入、代码审计、中国蚁剑)

    这是作者网络安全自学教程系列 主要是关于安全工具和实践操作的在线笔记 特分享出来与博友们学习 希望您喜欢 一起进步 这篇文章主要介绍5月9日参加津门杯CTF题目知识 包括power cut hate php Go0SS HploadHub和
  • 一步一步写算法(之单向链表)

    声明 版权所有 欢迎转载 请勿用于商业用途 联系信箱 feixiaoxing 163 com 有的时候 处于内存中的数据并不是连续的 那么这时候 我们就需要在数据结构中添加一个属性 这个属性会记录下面一个数据的地址 有了这个地址之后 所有的
  • 四种方法让你的Boost电路更安全

    开关电源最常见的三种结构布局是降压 buck 升压 boost 和降压 升压 buck boost 这三种布局都不是相互隔离的 今天介绍的主角是boost升压电路 the boost converter 或者叫step up convert
  • 宜搭低代码开发师(高级)创建待办列表应用 流程截图及实例代码(避坑专用)

    目录 目标 操作步骤 一 主要涉及的接口 二 代码及说明步骤 目标 试题截图及步骤代码说明 很快完成考试
  • 蓝桥杯常用知识点

    datetime 库 import datetime 设置时间 start datetime date 1901 1 1 不算这一天 是从1900 12 31开始的 end datetime date 2001 1 1 到2000 12 3
  • Tesseract5.0.0+OpenCV3+VS2019安装、字符识别学习

    Tesseract5 0 0 OpenCV3 VS2019安装 字符识别学习 背景 Visual Studio 2019安装 OpenCV3安装 配置 Tesseract v5 0 0安装 在Windows PowerShell中下指令识别
  • python3+pyqt5实践历程(一)——基于socket通信与pyqt5的串口工具

    python3 pyqt5实践历程 一 基于socket通信与pyqt5的串口工具 文章目录 系列文章目录 制作背景 最终功能 工具截图展示 代码详解 系列文章目录 python3 tkinter实践历程 一 基于requests与tkin
  • 1.23 DC-DC的输入电容Cin与输出电容Cout功能

    DC DC电路的输入电容Cin和输出电容Cout是十分重要的器件 输入电容Cin和输出电容Cout具体功能如下 输入电容Cin 给DCDC电路提供稳定的输入电流 提高响应时间 且还能稳定输入电压Vin 输出电容Cout 减小DCDC电路的输
  • STM32——中断概览(中断优先级)

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