【【萌新的STM32学习-17 中断的基本概念2】】

萌新的STM32学习-17 中断的基本概念2

STM32中断优先级的基本概念
在这里插入图片描述
抢占优先级: 高抢占优先级可以打断正在执行的低抢占优先级中断
响应优先级: 这个也叫子优先级 抢占优先级相同,响应优先级高的中断不能打断响应优先级低的中断。还有一种情况就是当两个或者多个中断的抢占式优先级和响应优先级相同时,那么就遵循自然优先级,看中断向量表的中断排序,数值越小,优先级越高。

在 NVIC 中由寄存器 NVIC_IPR0-NVIC_IPR59 共 60 个寄存器控制中断优先级,每个寄存器的 8 位,所以就有了 240 个宽度为 8bit 的中断优先级控制寄存器,原则上每个外部中断可配置的优先级为 0~255,数值越小,优先级越高。但是实际上 M3 芯片为了精简设计,只使用了高四位[7:4],低四位取零,这样以至于最多只有 16 级中断嵌套,即 2^4=16。
对于 NVCI 的中断优先级分组:STM32F103 将中断分为 5 个组,组 0~4。该分组的设置是由 SCB->AIRCR 寄存器的 bit10~8 来定义的。
在这里插入图片描述
特别提示: 一个工程中,一般只设置一次中断优先级分组。
这到底是怎么一个说法和分配呢
我们拿STM32中断优先级2 举例 假设分组为2
那么一共4个 分为 2部分 前面2个被称为抢占优先级 后面2个位组成 响应优先级

抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。
结合实例说明一下:假定设置中断优先级分组为 2,然后设置中断 3(RTC_WKUP 中断)的抢占优先级为 2,响应优先级为 1。中断 6(外部中断 0)的抢占优先级为 3,响应优先级为 0。中断 7(外部中断 1)的抢占优先级为 2,响应优先级为 0。那么这 3 个中断的优先级顺序为:中断 7>中断 3>中断 6。上面例子中的中断 3 和中断 7 都可以打断中断 6 的中断。而中断 7 和中断 3 却不可以相互打断!
在这里插入图片描述
关于STM32 NVIC的使用
1.设置中断 AIRCR[10:8]
HAL_NVIC_SetPriorityGrouping

2.设置中断优先级 IPRx bit [7:4]
HAL_NVIC_SetPriority

3.使能中断 ISERx
HAL_NVIC_EnablelRQ

ST 公司把 core_cm3.h 文件的 NVIC 相关函数封装到 stm32f1xx_hal_cortex.c 文件中,下面
列出我们较为常用的函数进行,想了解更多其他的函数请自行查阅。

  1. HAL_NVIC_SetPriorityGrouping 函数
    HAL_NVIC_SetPriorityGrouping 是设置中断优先级分组函数。其声明如下:
    void HAL_NVIC_SetPriorityGrouping(uint32_t PriorityGroup);
    ⚫ 函数描述:
    用于设置中断优先级分组。
    ⚫ 函数形参:
    形参 1 是中断优先级分组号,可以选择范围:NVIC_PRIORITYGROUP_0 到
    NVIC_PRIORITYGROUP_4(共 5 组)。
    ⚫ 函数返回值:

    ⚫ 注意事项:
    这个函数在一个工程里基本只调用一次,而且是在程序 HAL 库初始化函数里面已经被调
    用,后续就不会再调用了。因为当后续调用设置成不同的中断优先级分组时,有可能造成前面
    设置好的抢占优先级和响应优先级不匹配。
  2. HAL_NVIC_SetPriority 函数
    HAL_NVIC_SetPriority 是设置中断优先级函数。其声明如下:
    void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority,
    uint32_t SubPriority);
    ⚫ 函数描述:
    用于设置中断的抢占优先级和响应优先级(子优先级)。
    ⚫ 函数形参:
    形参 1 是中断号,可以选择范围:IRQn_Type 定义的枚举类型,定义在 stm32f103xe.h。
    形参 2 是抢占优先级,可以选择范围:0 到 15。
    形参 3 是响应优先级,可以选择范围:0 到 15。⚫ 函数返回值:无3. HAL_NVIC_EnableIRQ 函数HAL_NVIC_EnableIRQ 是中断使能函数。其声明如下:void HAL_NVIC_EnableIRQ(IRQn_Type IRQn);⚫ 函数描述:用于使能中断。⚫ 函数形参:形参 IRQn 是中断号,可以选择范围:IRQn_Type 定义的枚举类型,定义在 stm32f103xe.h。⚫ 函数返回值:无

EXIT
基本概念
简介是外部(扩展)中断事件控制器
包含20个产生事件/中断请求的边沿检测器 ,即总共: 20条EXTI线(F1)
EXTI 即是外部中断和事件控制器,它是由 20 个产生事件/中断请求的边沿检测器组成。每一条输入线都可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。
中断和事件的
中断: 要进入NVIC,有相应的中断服务区函数,需要CPU 处理
事件: 不进入NVIC,仅用于内部硬件自动控制的,如: TIM DMA ADC
在这里插入图片描述
这里19根因为在设计的时候就没设计成互联型 互联型的是带上以太网的所以是20根

每条EXTI线都可以单独配置:选择类型(中断或者事件) ,触发方式(上升沿,下降沿,或者双边沿触发) ,支持软件触发,开启/屏蔽,有挂起状态位

EXTI的工作原理
在这里插入图片描述
标号①是一个边沿检测电路,包括边沿检测电路,上升沿触发选择寄存器(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)。边沿检测电路以输入线作为信号输入端,如果检测到有边沿跳变就输出有效信号‘1’,就输出有效信号‘1’到标号②部分电路,否则输入无效信号‘0’。边沿跳变的标准在于开始的时候对于上升沿触发选择寄存器或下降沿触发选择寄存器对应位的设置,对应位的设置可以参照一下表 16.1.2.1。标号②是一个或门电路,它的两个信号输入端分别是软件中断事件寄存器(EXTI_SWIER)和边沿检测电路的输入信号。或门电路只要输入端有信号‘1’,就会输出‘1’,所以就会输出‘1’到标号③电路和标号④电路。通过对软件中断事件寄存器的读写操作就可以启动中断/事件线,即相当于输出有效信号‘1’到或门电路输入端。标号③是一个与门电路,它的两个信号输入端分别是中断屏蔽寄存器(EXTI_IMR)和标号②电路输出信号。与门电路要求输入都为‘1’才输出‘1’,这样子的情况下,如果中断屏蔽寄存器(EXTI_IMR)设置为 0 时,不管从标号②电路输出的信号特性如何,最终标号③电路输出的信号都是 0;假如中断屏蔽寄存器(EXTI_IMR)设置为 1 时,最终标号③电路输出的信号才由标号②电路输出信号决定,这样子就可以简单控制 EXTI_IMR 来实现中断的目的。标号④电路输出‘1’就会把请求挂起寄存器(EXTI_PR)对应位置 1。最后,请求挂起寄存器(EXTI_PR)的内容就输出到 NVIC 内,实现系统中断事件的控制。接下来我们看看 EXTI 功能框图的产生事件的线路。产生事件线路是从标号②之后与中断线路有所不用,之前的线路都是共用的。标号④是一个与门,输入端来自标号②电路以及来自于事件屏蔽寄存器(EXTI_EMR)。如果 EXTI_EMR 寄存器设置为 0,那不管标号②电路输出的信号是‘0’还是‘1’,最终标号④输出的是‘0’;如果 EXTI_EMR 寄存器设置为 1,最终标号④电路输出信号就由标号③电路输出的信号决定,这
样子就可以简单的控制 EXTI_EMR 来实现是否产生事件的目的。
标号④电路输出有效信号 1 就会使脉冲发生器电路产生一个脉冲,而无效信号就不会使其
产生脉冲信号。脉冲信号产生可以给其他外设电路使用,例如定时器,模拟数字转换器等,这
样的脉冲信号一般用来触发 TIM 或者 ADC 开始转换。
产生中断线路目的使把输入信号输入到 NVIC,进一步运行中断服务函数,实现功能。而产
生事件线路目的是传输一个脉冲信号给其他外设使用,属于硬件级功能。

对于第一部分就是说 我使得上升沿置1 那么我通过边沿检测器进来一个上升沿 就允许传输到第二部分 如果是置为0 那么即使上升沿来了也不会
然后来到第二部分 第二部分是一个或门 因为我们收到的一部分内容是来自于前者通过边沿检测电路的(1)
因为上面连接的是软件中断事件寄存器 意思就是这一部分和块1的是并列的 大家都通过或门只要是1 都能传入下一级
这就是属于我们在选择触发上 可以选择硬件触发还是软件触发

接下来进入第三部分模块
硬件触发得到的1到了之后还得进入一个请求挂起寄存器 (因为对我们来说想要完成一次触发 不仅要保证 时序上的正确 还要保证 系统层面上 允许中断存在,不然真就随便一个中断就打断我现在做的事情吗) 1 来了之后回自动的使得请求挂起寄存器对应位置为1,然后和中断屏蔽寄存器共同连接至一个与门上 (所以中断屏蔽寄存器必须为1才能一起通过与门传输到NVIC中断控制器上)

上升沿触发选择寄存器(EXTI_RTSR)
在这里插入图片描述
我们只用到了0到19 但是第19位是只适用于互联型的所以只用到了0到18 因为板子正好只有19根中断线 当寄存器输入1时才会允许 输入线上的上升沿触发

同理下降沿也是类似的

中断屏蔽也是同理19根线
挂机EXTI_PR也是同理
假设EXTI-8发生了选择的边沿事件, 该为被置入1 那么我们可以通过在该位写入‘1’ 来清除它

EXTI_FTSR 下降沿触发
EXTI_RTSR 上升沿触发
EXTI_IMR 中断屏蔽寄存器
EXTI_PR 请求挂起寄存器

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试 - 字符串筛选排序 - 数组(Java 2022 Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

深度学习优化入门:Momentum、RMSProp 和 Adam

目录 深度学习优化入门:Momentum、RMSProp 和 Adam 病态曲率 1牛顿法 2 Momentum:动量 3Adam 深度学习优化入门:Momentum、RMSProp 和 Adam 本文,我们讨论一个困扰神经网络训练的问题,病态曲率。 虽然局部极小值和鞍点会阻碍…

【深度学习】实验02 鸢尾花数据集分析

文章目录 鸢尾花数据集分析决策树K-means 鸢尾花数据集分析 决策树 # 导入机器学习相关库 from sklearn import datasets from sklearn import treeimport matplotlib.pyplot as plt import numpy as np# Iris数据集是常用的分类实验数据集, # 由Fisher, 1936收集…

NSSCTF——Web题目2

目录 一、[HNCTF 2022 Week1]2048 二、[HNCTF 2022 Week1]What is Web 三、[LitCTF 2023]1zjs 四、[NCTF 2018]签到题 五、[SWPUCTF 2021 新生赛]gift_F12 一、[HNCTF 2022 Week1]2048 知识点:源代码审计 解题思路: 1、打开控制台,查看…

Android中的APK打包与安全

aapt2命令行实现apk打包 apk文件结构 classes.dex:Dex,即Android Dalvik执行文件 AndroidManifest.xml:工程中AndroidManifest.xml编译后得到的二进制xml文件 META-INF:主要保存各个资源文件的SHA1 hash值,用于校验…

【Linux】【驱动】驱动挂载的时候给驱动传递参数

【Linux】【驱动】驱动挂载的时候给驱动传递参数 绪论1.什么是驱动传参驱动传参就是传递参数给我们的驱动举例:2.驱动传参数有什么作用呢?3. 传递单个参数使用如下的数组4. 传递数组使用以下函数: 传递数字值代码指令 传递数组代码传递数组指令 绪论 1.什么是驱动…

服务器中了mkp勒索病毒该怎么办?勒索病毒解密,数据恢复

mkp勒索病毒算的上是一种比较常见的勒索病毒类型了。它的感染数量上也常年排在前几名的位置。所以接下来就由云天数据恢复中心的技术工程师来对mkp勒索病毒做一个分析,以及中招以后应该怎么办。 一,中了mkp勒索病毒的表现 桌面以及多个文件夹当中都有一封…

【JAVA】抽象类与接口--下

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 抽象类与接口 1. 实现多个接口2. 接口间…

开源的安全性:挑战与机会

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

MR混合现实实训教学系统演示

MR混合现实实训教学系统的应用场景: 1、汽车检测与维修 使用MR混合现实技术,学生可以通过虚拟头戴式设备,将课堂延伸到实地。例如,在汽车维修课程中,学生可以通过MR技术,熟悉汽车模型内部关键结构&#x…

简析SCTP开发指南

目录 前言一、SCTP基本概念二、SCTP开发步骤1. **环境配置**:2. **建立Socket**:3. **绑定和监听**:4. **接收和发送数据**:5. **关闭连接**: 三、 C语言实现SCTP3.1SCTP客户端代码:3.2 SCTP服务器端代码&a…

24 | 紧跟时代步伐:微服务模式下API测试要怎么做?

微服务架构(Microservice Architecture) 微服务是一种架构风格。在微服务架构下,一个大型复杂软件系统不再由一个单体组成,而是由一系列相互独立的微服务组成。其中,各个微服务运行在自己的进程中,开发和部…

Java的锁大全

Java的锁 各种锁的类型 乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Java和数据库中都有此概念对应的实际应用。 先说概念。对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数…

wordpress搭建博客教程总结_01主题配置

目前搭建效果站 薪火相传 (yuetan.wang) 日间 月间 爱心 页面、 爱心冲击波! (yuetan.wang) 好看的主题分享 个人博客主题分享(WordPress) – Echo小窝 博客主要效果 1. Argon

【51单片机】EEPROM-IIC实验(按键控制数码管)

目录 🎁I2C总线 ​编辑 🎁代码 🏳️‍🌈main.c 🏳️‍🌈i2.c 🎆代码分析 🎁I2C总线 I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距…

使用 NBAR(基于网络的应用程序识别) 进行应用流量分析

识别和分类网络应用程序是有效管理网络带宽的关键。通过对网络流量进行分类,管理员可以根据企业的需要可视化、组织和确定网络流量的优先级。通过识别和分类网络流量,网络管理员可以有效地应用 QoS 策略,从而实现优化的网络带宽性能。 什么是…

PDF如何转ppt?PDF转ppt的方法

PDF是一种广泛应用于文档传输和存储的格式,然而,在某些情况下,我们可能需要将PDF文件转换为PPT,以便更加灵活地编辑和展示内容。那么,PDF如何转ppt呢?在本文中,我们将介绍几种常用的方法和工具&#xff0c…

NIST测试包的可能问题

其实,大多数出现的问题,可能或多或少都可能跟数据集的大小相关。 如: Random Excursions Variant,在测试结果中,可能显示为横线,打开原始报告,可以看到: WARNING: TEST NOT APPLICABLE. THERE ARE AN INSUFFICIENT NUMBER INSUFFICIENT NUMBER OF C…

keepalived + lvs (DR)

目录 一、概念 二、实验流程命令 三、实验的目的 四、实验步骤 一、概念 Keepalived和LVS(Linux Virtual Server)可以结合使用来实现双机热备和负载均衡。 Keepalived负责监控主备服务器的可用性,并在主服务器发生故障时,将…

阿里云通义千问开源第二波!大规模视觉语言模型Qwen-VL上线魔搭社区

通义千问开源第二波!8月25日消息,阿里云推出大规模视觉语言模型Qwen-VL,一步到位、直接开源。Qwen-VL以通义千问70亿参数模型Qwen-7B为基座语言模型研发,支持图文输入,具备多模态信息理解能力。在主流的多模态任务评测…