当前位置: 首页 > news >正文

【【萌新的STM32学习-16中断的基本介绍1】】

萌新的STM32学习-16中断的基本介绍1

中断
什么是中断 中断是打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续执行,就叫中断
中断的作用
实时控制 : 就像对温度进行控制
故障控制 : 第一时间对突发情况做出反应,就好比电梯夹人,我马上启动关断电梯
数据传输 : 不确定数据何时会来,如串口数据传输
中断的意义: 高级处理紧急程序,不会一直占用CPU资源

STM32 GPIO外部中断简图

既然信号是外部进来的,那么首先遇到的外设肯定是GPIO (上拉 下拉 浮空输入) 接下来会来到 AFIO(F1) 然后到EXTI (外部中断事件控制器, 屏蔽 上升沿 下降沿) 然后传入了 NVIC (中断总管家 管理了使能 优先级控制) 最后传入进CPU 去处理中断

NVIC 叫嵌套向量中断控制器 属于内核
NVIC 支持256个中断(16个内核+240外部) 支持 256个优先级 允许裁剪 因为用不到那么多的 太冗余了裁剪一下 显得简单一点
STM32F103ZE 这个板子 支持 10个内核中断 60个外部中断

什么是中断向量表
定义一块固定的内存,以4字节对齐,存放各个中断服务函数程序的首地址

中断向量表定义在启动文件,当发生中断,CPU会自动执行对应的中断服务函数。
下表是10个内核中断
在这里插入图片描述
NVIC相关寄存器介绍
中断使能寄存器 ISER 32位 寄存器个数8个
每个位控制一个中断
乘一下 发现是256 但是外部存储器个数是240个其中有16个 是保留的

中断除能寄存器 ICER 32位 8个
和上面这个的说法是一样的 有16个端口没用到

应用程序中断及复位控制寄存器 AIRCR 32位 寄存器个数1个
我们只用到了位[10:8] 控制优先级分组

中断优先级寄存器 IPR 8位 寄存器个数240个
240个寄存器就对应着外部中断是240个
8个位对应1个中断,而STM32只使用高4位
ISER[8]:ISER 全称是:Interrupt Set Enable Registers,这是一个中断使能寄存器组。上面
说了 CM3 内核支持 256 个中断,这里用 8 个 32 位寄存器来控制,每个位控制一个中断。但是
STM32F103的可屏蔽中断最多只有60个,所以对我们来说,有用的就是两个(ISER[0]和ISER[1]),
总共可以表示 64 个中断。而 STM32F103 只用了其中的 60 个。ISER[0]的 bit0~31 分别对应中
断 0~31;ISER[1]的 bit0~27 对应中断 32~59,这样总共 60 个中断就可以分别对应上了。你要使
能某个中断,必须设置相应的 ISER 位为 1,使该中断被使能(这里仅仅是使能,还要配合中断
分组、屏蔽、IO 口映射等设置才算是一个完整的中断设置)。具体每一位对应哪个中断,请参考
stm32f103xe.h 里面的第 69 行。
ICER[8]:全称是:Interrupt Clear Enable Registers,是一个中断除能寄存器组。该寄存器组
与 ISER 的作用恰好相反,是用来清除某个中断的使能的。其对应位的功能,也和 ICER 一样。
这里要专门设置一个 ICER 来清除中断位,而不是向 ISER 写 0 来清除,是因为 NVIC 的这些寄
存器都是写 1 有效的,写 0 是无效的。具体为什么是这样子,可以查看《Cortex-M3 权威指南》
第 125 页,NVIC 章节。
ISPR[8]:全称是:Interrupt Set Pending Registers,是一个中断使能挂起控制寄存器组。每
个位对应的中断和 ISER 是一样的。通过置 1,可以将正在进行的中断挂起,而执行同级或更高
级别的中断。写 0 是无效的。
ICPR[8]:全称是:Interrupt Clear Pending Registers,是一个中断解挂控制寄存器组。其作
用与 ISPR 相反,对应位也和 ISER 是一样的。通过设置 1,可以将挂起的中断解挂。写 0 无效。
IABR[8]:全称是:Interrupt Active Bit Registers,是一个中断激活标志位寄存器组。对应位
所代表的中断和 ISER 一样,如果为 1,则表示该位所对应的中断正在被执行。这是一个只读寄
存器,通过它可以知道当前在执行的中断是哪一个。在中断执行完了由硬件自动清零。
IP[240]:全称是:Interrupt Priority Registers,是一个中断优先级控制的寄存器组。这个寄
存器组相当重要!STM32F103 的中断分组与这个寄存器组密切相关。IP 寄存器组由 240 个 8bit
的寄存器组成,每个可屏蔽中断占用 8bit,这样总共可以表示 240 个可屏蔽中断。而 STM32F103
只用到了其中的 60 个。IP[59]~IP[0]分别对应中断 59~0。而每个可屏蔽中断占用的 8bit 并没有
全部使用,而是只用了高 4 位。这 4 位,又分为抢占优先级和子优先级。抢占优先级在前,子
优先级在后。而这两个优先级各占几个位又要根据 SCB->AIRCR 中的中断分组设置来决定。关
于中断优先级控制的寄存器组我们下面详细讲解。

现在讲述NVIC的工作原理

首先进来四个外部中断 1 2 3 4
就是外部中断240个里面的四个
开始经过两个寄存器 一个是中断使能 一个是中断失能
都是1bit 控制一个中断使能/失能
然后之后进入IPR
IPR里面是用8bit来控制中断的优先级
但是相对来说STM32 只会使用高4位来控制

然后这IPR到底是什么状态则由我们的AIRCR控制 AIRCR的位[10:8] 控制8种分组

对于内核中断 他会不经过ISER、ICER 直接来到IPR相同位置的SHPR
SHPR 和IPR是同级的 进行比对谁的优先级高低

相关文章:

【【萌新的STM32学习-16中断的基本介绍1】】

萌新的STM32学习-16中断的基本介绍1 中断 什么是中断 中断是打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续执行,就叫中断 中断的作用 实时控制 : 就像对温度进行控制 故障控制 : 第一时间对突发情…...

ctfshow-红包题第二弹

0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 同样,先看一下有没有注释的内容,可以看到有一个cmd的入参 执行之后可以看到文件代码,可以看到也是eval,但是中间对大部分的字符串都进行了过滤,留下了…...

C# winform中无标题栏窗口如何实现鼠标拖动?

文章目录 在C#中,可以通过重写窗体的鼠标事件来实现无标题栏窗体的拖动。 具体步骤如下: 禁用窗体的默认标题栏:在窗体属性中设置FormBorderStyle为None。 重写鼠标事件:在窗体类中重写MouseDown、MouseMove和MouseUp事件。 定义变量存储鼠标点击时的坐标。 在MouseDown事…...

【操作系统】各平台定时器粒度

文章目录 WindowsLinux Windows 在 Windows 操作系统中,定时器的精度取决于系统时钟的精度。通常情况下,Windows 系统时钟的精度为 15.6 毫秒(即每秒钟约 64 次时钟中断),因此定时器的最小精度也是 15.6 毫秒。但是&a…...

抽象又有点垃圾的JavaScript

常数的排序 let x 10;let y 20;let z;if (x < y) {z x;x y;y z;}console.log(x, y);//x 20 ,y 10 通过一个媒介来继承x的初始值&#xff0c;然后将y的值赋值给x&#xff0c;再把媒介z的值赋值给y&#xff0c;达到排序 一个可重复使用的排序程序 第一种 function s…...

【Spring Boot】使用Spring Boot进行transformer的部署与开发

Transformer是一个用于数据转换和处理的平台&#xff0c;使用Spring Boot可以方便地进行Transformer的部署与开发。 以下是使用Spring Boot进行Transformer部署与开发的步骤&#xff1a; 创建Spring Boot项目 可以使用Spring Initializr创建一个简单的Spring Boot项目。在创…...

Qt应用开发(基础篇)——富文本浏览器 QTextBrowser

一、前言 QTextBrowser类继承于QTextEdit&#xff0c;是一个具有超文本导航的富文本浏览器。 框架类 QFramehttps://blog.csdn.net/u014491932/article/details/132188655 滚屏区域基类 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486 文…...

JDBC:更新数据库

JDBC&#xff1a;更新数据库 更新记录删除记录 为了更新数据库&#xff0c;您需要使用语句。但是&#xff0c;您不是调用executeQuery()方法&#xff0c;而是调用executeUpdate()方法。 可以对数据库执行两种类型的更新&#xff1a; 更新记录值删除记录 executeUpdate()方…...

如何自定义iview树形下拉内的内容

1.使用render函数给第一层父级定义 2. 使用树形结构中的render函数来定义子组件 renderContent(h, {root, node, data}) {return data.children.length0? h(span, {style: {display: inline-block,width: 400px,lineHeight: 32px}}, [h(span, [h(Icon, {type: ios-paper-outli…...

技术的巅峰演进:深入解析算力网络的多层次技术设计

在数字化时代的浪潮中&#xff0c;网络技术正以前所未有的速度演进&#xff0c;而算力网络作为其中的一颗明星&#xff0c;以其多层次的技术设计引领着未来的网络构架。本文将带您深入探索算力网络独特的技术之旅&#xff0c;从底层协议到分布式控制&#xff0c;为您呈现这一创…...

图像特征描述和人脸识别

CV_tutorial2 特征检测使用HOG实现行人检测Harris角点检测关键特征检测SIFT纹理特征 LBP算法 模板匹配人脸识别 特征检测 使用HOG实现行人检测 HOG方向梯度直方图 实现过程&#xff1a; 灰度化&#xff08;为了去掉颜色、光照对形状的影响&#xff09;;采用Gamma校正法对输…...

浅谈Lua协程和函数的尾调用

前言 虽然不经常用到协程&#xff0c;但是也不能谈虎色变。同时&#xff0c;在有些场景&#xff0c;协程会起到一种不可比拟的作用。所以&#xff0c;了解它&#xff0c;对于一些功能&#xff0c;也会有独特的思路和想法。 协程 概念 关于进程和线程的概念就不多说。 那么…...

【VS Code插件开发】状态栏(五)

&#x1f431; 个人主页&#xff1a;不叫猫先生&#xff0c;公众号&#xff1a;前端舵手 &#x1f64b;‍♂️ 作者简介&#xff1a;前端领域优质作者、阿里云专家博主&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4e2; 资料领取&#xff1a;前端…...

睿趣科技:抖音开网店要怎么找货源

在当今数字化的时代&#xff0c;电商平台的兴起为越来越多的人提供了开设网店的机会&#xff0c;而抖音作为一个充满活力的短视频平台&#xff0c;也为创业者提供了广阔的发展空间。然而&#xff0c;对于许多初次涉足电商领域的人来说&#xff0c;找到合适的货源却是一个重要的…...

表和Json的相互操作

目录 一、表转Json 1.使用 for json path 2.如何返回单个Json 3.如何给返回的Json增加一个根节点呢 4.如何给返回的Json增加上一个节点 二、对Json基本操作 1.判断给的字符串是否是Json格式 2.从 JSON 字符串中提取标量值 3. 从 JSON 字符串中提取对象或数组 4. 更…...

每日后端面试5题 第八天

1.UDP和TCP协议的区别 1.UDP无连接&#xff0c;速度快&#xff0c;安全性低&#xff0c;适合高速传输、实时广播通信等。 2.TCP面向连接&#xff0c;速度慢&#xff0c;安全性高&#xff0c;适合传输质量要求高、大文件等的传输&#xff0c;比如邮件发送等。 &#xff08;还…...

mysql数据库和数据表

常用的数据类型: int &#xff1a; 整型 用于定义整数类型的数据float &#xff1a; 单精度浮点4字节32位 准确表示到小数点后六位.double &#xff1a;双精度浮点8字节64位char &#xff1a;固定长度的字符类型 用于定义字符类型数据varchar &#xff1a;可变长度的字符类…...

MySQL执行更新的流程

一、加载缓存数据 引擎要执行更新语句的时候 &#xff0c;比如对“id10”这一行数据&#xff0c;他其实会先将“id10”这一行数据看看是否在缓冲池里&#xff0c;如果不在的话&#xff0c;那么会直接从磁盘里加载到缓冲池里来&#xff0c;而且接着还会对这行记录加独占锁。 二…...

要获取 PHP 中当前时间的前一天、本周、本月、本季度和本年,可以使用 PHP 的内置日期和时间函数。

要获取 PHP 中当前时间的前一天、本周、本月、本季度和本年&#xff0c;可以使用 PHP 的内置日期和时间函数。下面是一些示例代码来帮助你实现这些功能&#xff1a; php // 获取当前时间的前一天 $yesterday date(Y-m-d, strtotime(-1 day));// 获取本周的开始日期和结束日期…...

java八股文面试[java基础]——如何实现不可变的类

知识来源&#xff1a; 【23版面试突击】如何实现不可变的类&#xff1f;_哔哩哔哩_bilibili 【2023年面试】怎样声明一个类不会被继承&#xff0c;什么场景下会用_哔哩哔哩_bilibili...

juc基础(四)

目录 一、ThreadPool 线程池 1、参数说明 2、拒绝策略 3、线程池种类 &#xff08;1&#xff09;newCachedThreadPool(常用) &#xff08;2&#xff09;newFixedThreadPool(常用) &#xff08;3&#xff09;newSingleThreadExecutor(常用) &#xff08;4&#xff09;ne…...

C++智能指针weak_ptr的作用

当使用std::shared_ptr时&#xff0c;循环引用可能会导致资源泄漏的问题。下面是一个简单的示例&#xff0c;展示了循环引用导致资源泄漏的情况&#xff1a; #include <iostream> #include <memory>class A; class B;class A { public:std::shared_ptr<B> b…...

lintcode 344 · 歌曲时间【背包问题,动态规划】

题目链接&#xff0c;描述 https://www.lintcode.com/problem/344/ 给定长度为N的正整数数组song代表N首歌的时间 请你任选其中若干首播放&#xff0c;在满足开始播放最后一首歌的时间小于M的情况下求播放歌曲的最长时间 每首歌只能被播放一次 你可以任意指定播放顺序1 \leq …...

Qt应用开发(基础篇)——对话框窗口 QDialog

一、前言 QDialog类继承于QWidget&#xff0c;是Qt基于对话框窗口(消息窗口QMessageBox、颜色选择窗口QColorDialog、文件选择窗口QFileDialog等)的基类。 QDialog窗口是顶级的窗口&#xff0c;一般情况下&#xff0c;用来当做用户短期任务(确认、输入、选择)或者和用户交流(提…...

Linux系统:CentOS 7 CA证书服务器部署

目录 一、理论 1.CA认证中心 2.CA证书服务器部署 二、实验 1. CA证书服务器部署 三、总结 一、理论 1.CA认证中心 &#xff08;1&#xff09;概念 CA &#xff1a;CertificateAuthority的缩写&#xff0c;通常翻译成认证权威或者认证中心&#xff0c;主要用途是为用户…...

C++图形界面编程-MFC

C控制台程序是命令行黑框&#xff0c;如果要写一个图形界面&#xff0c;VS也提供了图形界面编程MFC。建项目的时候选如下选项&#xff1a; 类似于QT。 问&#xff1a;那么MFC项目的运行入口main()或WinMain()在哪里呢&#xff1f; 答&#xff1a;其实&#xff0c;在MFC应用程…...

知识扩展贴 圆越大,其圆接触的无知面就越多

CSDN 排行榜 https://blog.csdn.net/rank/list/total?spm1001.2014.3001.5476 顺其自然~_-CSDN博客...

怎么把pdf转换成jpg格式?

怎么把pdf转换成jpg格式&#xff1f;在我们日常的办公过程中&#xff0c;PDF文件是一个经常被使用来传输文件的格式。它能够确保我们的文件内容不会混乱&#xff0c;并以更加完美的方式呈现出来。然而&#xff0c;PDF文件也存在一些缺陷。例如&#xff0c;它无法直接编辑&#…...

Android SDK 上手指南||第六章 用户交互

第六章 用户交互 在这篇教程中&#xff0c;我们将对之前所添加的Button元素进行设置以实现对用户点击的检测与响应。为了达成这一目标&#xff0c;我们需要在应用程序的主 Activity类中略微涉及Java编程内容。如果大家在Java开发方面的经验不太丰富也没必要担心&#xff0c;只…...

Vue3+Pinia+Koa+Three.js 全栈电商项目总结复盘

前言 前几天一个朋友去义乌旅游&#xff0c;带回来很多小商品&#xff0c;就是一整个物美价廉&#xff0c;但是为什么线下购物和网购有的时候差别这么大&#xff08;网购经常要退换货啊&#x1f62d;&#x1f62d;&#x1f62d;&#xff09;&#xff0c;为此我萌生了一个想法&…...

WordPress做的网站源代码/网上有卖网站链接的吗

1&#xff0c;在wind搭建VisualSVN Server Manager 由于好几次启动server都找不到项目分支。解决办法&#xff1a;卸载重装之后项目出现&#xff0c;服务器项目不会消失。 2&#xff0c;sql更新语句 update DyMyOrderWTCE&#xff08;表1&#xff09; dy set dy.cesdzt (se…...

新郑做网站推广/打开百度一下的网址

本文讲三种content-type以及在Jmeter中对应的参数输入方式 第一部分&#xff1a;目前工作中涉及到的content-type 有三种&#xff1a; content-type&#xff1a;在Request Headers里&#xff0c;告诉服务器我们发送的请求信息是哪种格式的。 1 content-type:application/x-www-…...

wordpress手机端源码/乌海网站seo

最近在工作中要实现一种“流程审批”的功能&#xff0c;查阅资料得知&#xff0c;workFlow技术可以满足我的需求&#xff0c;于是就开始沉下心来好好学习一下这门技术。总结的学习资料也拿出来和大家共享一下。 什么是工作流: 工作流&#xff0c;指的是一系列相互衔接、自动进行…...

网站上线要准备什么/会计培训

登录时的填写密码显示文本或者显示黑点切换其实就是两个div的v-if/else判断&#xff1b; 下面详细说下具体实现过程&#xff1b;&#xff08;附代码图&#xff09; 第一步&#xff1a; 默认密码显示的是黑点&#xff1a; 显示密码文本: 代码部分这样写&#xff1a; 红线框圈住…...

17网站一起做网店 发货慢/最新seo教程

2019独角兽企业重金招聘Python工程师标准>>> 过度使用同步会导致性能低下、死锁或其他不确定问题 在一个同步方法或代码块中&#xff0c;不要放弃对客户端的控制 即&#xff1a;在一个同步区域内部&#xff0c;不要调用被覆盖方法&#xff0c;或者是传入对象提供的方…...

wordpress 结构分析/简述网站内容如何优化

前段时间参加了邀请的《仙风道》内测。一天挑了 25 个问题。下边是一周之后《仙风道》第二次邀请我的时候&#xff0c;我写给他们的信。我在游戏界一年多了&#xff0c;我不想越陷越深…… 《仙风道》确实需要改进。不过按照一般的游戏开发周期&#xff0c;现在这个阶段已经不方…...