2. STM32_中断

news2024/12/27 1:23:47

中断

中断是什么:

打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。

中断的意义:

中断可以高效处理紧急程序,不会一直占用CPU资源。如实时控制、故障处理、处理不确定来临的数据。

中断信号传输简图:

NVIC

NVIC是什么:

NVIC就是嵌套向量中断控制器,属于内核的一部分,作用是管理全部的中断信号。NVIC支持256个中断(16内核 + 240外部)和256个优先级,这些中断和优先级是允许裁剪的。

对于STM32F103,它的NVIC支持10个内核中断、60个外部中断、16个中断优先级。

NVIC中常用寄存器含义:

  • ISER:中断使能,每一个位控制一个外部中断。
  • ICER:中断失能,每一个位控制一个外部中断。
  • AIRCR:应用程序中断及复位控制寄存器,用于控制中断优先级分组。
  • IPR:中断优先级寄存器,用于控制中断优先级。

中断优先级分类:

中断优先级有抢占优先级、响应优先级、自然优先级三种类型。

优先级数值越小,表示优先级越高。抢占和响应都相同的情况下,自然优先级越高的,先执行

  • 抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断
  • 响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断
  • 自然优先级:中断向量表的优先级

中断优先级分组:

优先级分组影响的是抢占、响应优先级所能够设置的bit位。STM32的中断优先级分组如下:

注意:中断优先级分组是配置全部中断,因此在一个工程中一般只设置一次。 

NVIC处理中断信号过程:

  • 对于内核中断

中断信号直接就进入到了SHPR寄存器中,最后SHPR与IPR共同比对,从而CPU确定先执行哪一个中断信号。

  • 对于外部中断

首先需要经过ISER、ICER,如果中断未使能,那么中断信号就不会传到IPR中,也就不会被CPU接收到,如图中外部中断1就是未使能下的信号传递过程。

之后信号存放在IPR中,IPR用于控制中断优先级,有抢占优先级与响应优先级这两种类型。这两种类型如何分配,由AIRCR寄存器控制,不同的中断优先级分组对应的抢占与响应所占bit位不一样。

最终CPU比对优先级,决定优先执行哪个中断。执行的中断时会跳转到中断向量表找到中断处理函数并执行函数体中的内容。

示例:

如下图,假设现在有这四个外设中断同时产生,抢占、响应、自然优先级如上表,分析CPU的执行顺序。 

首先看抢占优先级,2优先级可以抢占3优先级,所以RTC和EXTI1先执行。因为EXTI1的响应优先级比RTC高,所以先执行EXTI1,再执行RTC。

因为EXTI0和Systick的抢占和响应优先级一样,所以根据自然优先级判断响应顺序。Systick比EXTI0的自然优先级高,因此先执行Systick,再执行EXTI0。

EXTI

什么是EXTI:

EXTI就是外部中断事件控制器,主要作用是管理内部/外部的唤醒事件或者中断。F1包含20个产生事件/中断请求的边沿检测器,即总共:20条EXTI线,其中0~15是外部事件,其余是内部事件。

EXTI特性:

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

EXTI工作原理:

EXTI信号框图如下图,分为触发中断和触发事件两部分,中断的触发又分为软件触发和外部触发,下面主要叙述外部中断触发的过程。

当信号从输入线进入后,边沿检测电路会根据RTSR、FTSR来判断是上升沿有效还是下降沿有效,之后将有效信号1传导到或门。

1通过或门一定输出1,信号传导到PR中代表中断产生,之后传导到与门。此时如果IMR = 1,那么中断信号将传导到NVIC去处理。

AFIO 

什么是AFIO:

AFIO就是复用功能IO,主要用于重映射和外部中断映射配置。

对于中断配置,AFIO可以通过寄存器将EXTI0~EXTI15配置到具体的GPIO上。

EXTI与IO的映射关系:

对于EXTI0,对应的GPIO是pin0,究竟对应的是PA0还是PB0还是其他GPIO,这是由外部中断配置寄存器AFIO_EXTICR1来控制。

注意:同一时刻,只有一个pin0能连接上EXTI0

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

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

相关文章

【聚类】主成分分析 和 t-SNE 降维

1 主成分分析PCA PCA 是一种线性降维技术,旨在通过选择具有最大方差的特征方向(称为主成分)来压缩数据,同时尽可能减少信息损失。 1.1 原理 1.2 优缺点 from sklearn.decomposition import PCA import matplotlib.pyplot as plt…

ARM 嵌入式处理器内核与架构深度剖析:解锁底层技术逻辑

目录 一、ARM架构概述 1.1. 优势与特点 1.2. 应用领域 二、ARM内核的主要系列及特点 2.1. ARM内核与架构的关系 2.2. Cortex-A系列 2.2.1. 应用场景 2.2.2. 特点 2.3. Cortex-R系列 2.3.1. 应用场景 2.3.2. 特点 2.4. Cortex-M系列 2.4.1. 应用场景 2.4.2. 特点 …

数据结构 (21)树、森林和二叉树的关系

一、树 定义:树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。当集合为空时,是一棵空树;当集合非空时,有且仅有一个特定的称为根的结点。树中的每个结点可以有…

探索温度计的数字化设计:一个可视化温度数据的Web图表案例

随着科技的发展,数据可视化在各个领域中的应用越来越广泛。在温度监控和展示方面,传统的温度计已逐渐被数字化温度计所取代。本文将介绍一个使用Echarts库创建的温度计Web图表,该图表通过动态数据可视化展示了温度值,并通过渐变色…

计算机网络——数据链路层Mac帧详解

目录 前言 一、以太网 二、Mac帧 三、MTU——最大传输单元 四、Mac帧的传输过程 1.ARP协议 2.RARP协议 前言 在之前,我们学习过网络层的IP协议,了解到IP协议解决了从哪里来,到哪里去的问题,也就是提供了将数据从A到B的能力…

LabVIEW将TXT文本转换为CSV格式(多行多列)

在LabVIEW中,将TXT格式的文本文件内容转换为Excel格式(即CSV文件)是一项常见的数据处理任务,适用于将以制表符、空格或其他分隔符分隔的数据格式化为可用于电子表格分析的形式。以下是将TXT文件转换为Excel(CSV&#x…

响应式编程一、Reactor核心

目录 一、前置知识1、Lambda表达式2、函数式接口 Function3、StreamAPI4、Reactive-Stream1)几个实际的问题2)Reactive-Stream是什么?3)核心接口4)处理器 Processor5)总结 二、Reactor核心1、Reactor1&…

Vue3之弹窗

文章目录 第一步、引入JS第二步、弹框 在前端开发语言Vue3&#xff0c;在管理端如何进行弹窗&#xff1f;下面根据API实现效果。 Element API文档&#xff1a; Element-plus文档 搭建环境可参考博客【 初探Vue3环境搭建与nvm使用】 第一步、引入JS <script lang"ts&…

w~大模型~合集24

我自己的原文哦~ https://blog.51cto.com/whaosoft/12707697 #Time Travelling Pixels (TTP) 一种名为“时空旅行”&#xff08;TTP&#xff09;的新方法&#xff0c;该方法将SAM基础模型的通用知识整合到变化检测任务中。该方法有效地解决了在通用知识转移中的领域偏移问题…

git的简单使用与gdb

版本控制器git 为了能够更方便管理这些不同版本的文件&#xff0c;有了版本控制器&#xff0c;可以了解一个文件的历史&#xff0c;以及它的发展过程的系统&#xff0c;通俗的说就是一个可以记录工程的每一次改动和版本迭代的一个管理系统&#xff0c;同时也方便多人协作。 三…

从0开始学PHP面向对象内容之常用设计模式(策略,观察者)

PHP设计模式——行为型模式 PHP 设计模式中的行为模式&#xff08;Behavioral Patterns&#xff09;主要关注对象之间的通信和交互。行为模式的目的是在不暴露对象之间的具体通信细节的情况下&#xff0c;定义对象的行为和职责。它们常用于解决对象如何协调工作的问题&#xff…

解决windows下php8.x及以上版本,在Apache2.4中无法加载CURL扩展的问题

本文已首发于&#xff1a;秋码记录 若你也想搭建一个个人博客&#xff0c;可参考&#xff1a;国内 gitee.com Pages 下线了&#xff0c;致使众多站长纷纷改用 github、gitlab Pages 托管平台 在日新月异的信息化下&#xff0c;软件也在跟随着互联网的脚步&#xff0c;逐步推进…

git 常用命令及问题

一、常用命令 git add filename git add . git commit -m "messge" git commit --amend 修改最近一次的提交 git push origin HEAD:refs/for/master git clone url git checkout branchname 切换分支 git branch -r 查看远程仓库分支列表 git branch br…

【Gitlab】gitrunner并发配置

并发介绍 涉及到并发控制的一共有4个参数: concurrent , limit ,request_concurrency,parallel 全局的配置: [rootiZ2vc6igbukkxw6rbl64ljZ config]# vi config.toml concurrent 4 #这是一个总的全局控制&#xff0c;它限制了所有pipline&#xff0c;所有runner执行器…

利用Python爬虫精准获取淘宝商品详情的深度解析

在数字化时代&#xff0c;数据的价值日益凸显&#xff0c;尤其是在电子商务领域。淘宝作为中国最大的电商平台之一&#xff0c;拥有海量的商品数据&#xff0c;对于研究市场趋势、分析消费者行为等具有重要意义。本文将详细介绍如何使用Python编写爬虫程序&#xff0c;精准获取…

NFT Insider #157:The Sandbox 开启新一期 VoxEdit 比赛

市场数据 加密艺术及收藏品新闻 Artnames 项目上线&#xff0c;将用户姓名转化为个性化 NFT 艺术品 由知名数字艺术家 Arrotu 发起的生成艺术项目「Artnames」正式上线&#xff0c;利用区块链技术将用户姓名转化为独一无二的 NFT 艺术品。该项目于 11 月 14 日启动&#xff0…

Mysql数据库基础篇笔记

目录 sql语句 DDL——数据库定义语言&#xff08;定义库&#xff0c;表&#xff0c;字段&#xff09; 数据库操作&#xff1a; 表操作&#xff1a; DML 增删改语句 DQL 语法编写顺序&#xff1a; 条件查询 DCL 用户管理&#xff1a; 权限管理&#xff1a; 函数 常见字符串内置函…

基于单片机的频率测量电路设计

摘 要&#xff1a; 传统的频率测量设备大多因硬件电路庞大&#xff0c;导致设备整体体积相对较大&#xff0c;且测量频率信号的精确度低&#xff0c;测量范围较小&#xff0c;运行速度较慢。 据此&#xff0c;介绍了一种以 AT89C51 单片机为控制核心&#xff0c;由放大整形模块…

解决Ubuntu DNS覆盖写入127.0.0.53

ubuntu22.04解析网址时报错如图所示&#xff1a; 因为/etc/resolve.conf中存在 nameserver 127.0.0.53回环地址造成循环引用 原因&#xff1a; ubuntu17.0之后特有&#xff0c;systemd-resolvd服务会一直覆盖 解决方法&#xff1a; 1、修改resolv.config文件中的nameserver…

IDEA报错: java: JPS incremental annotation processing is disabled 解决

起因 换了个电脑打开了之前某个老项目IDEA启动springcloud其中某个服务直接报错&#xff0c;信息如下 java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process “jps.track.ap.depen…