05STM32EXIT外部中断中断系统

STM32EXIT外部中断&中断系统

  • 中断系统
    • 中断触发条件:
    • 中断处理流程和用途:
  • STM32中断
  • NVIC嵌套中断向量控制器基本结构

中断系统

在这里插入图片描述

中断触发条件:

对外部中断来说,可以是引脚发生了电平跳变
对定时器来说,可以是定时的时间到了
对串口通信来说,可以是接收到了数据
当这些事件发生时,情况比较紧急,比如外部中断来了,如果不处理,下一个跳变信号就跟着过来了。
比如串口接收中断来了,如果不读取接收到的数据,那下一个数据再过来,就会把原来的数据覆盖掉。
所以希望当中断条件满足时,CPU能够立即停下当前执行的程序,转而去处理中断事件的程序。

中断处理流程和用途:

比如外部中断来了,需要计次,那就变量++;串口中断来了就把接收到的数据转存起来;处理完紧急事情后,CPU回到原来程序运行的位置。
使用中断系统,能极大地提高程序的效率,如果没有中断系统,为了防止外部中断被忽略或者串口数据被覆盖,那主程序就只能不断地查询是否有这些事件发生,不能在干其他的事情。
如果没有定时器中断,那主函数就只有靠Delay函数,才能实现定时的功能。有了中断系统之后,主程序就可以放心执行其他事情,有中断的时候再去处理。大大提升效率。

中断优先级是根据程序设计的需求,自己设置的。紧急的事情优先级要设置地高一点,这样可以更好地安排中断事件,防止紧急的事件被别的中断耽误。

中断嵌套也是为了照顾非常紧急的中断的,能否进行中断嵌套,由中断优先级来决定。

在这里插入图片描述
中断来了,主程序都得立即暂停,程序由硬件电路自动跳转到中断程序中。
中断执行前,进行现场保护
中断执行后,会再还原现场。保证主程序即使被中断了,回来后也能继续运行。
用C语言编程,保护现场和还原现场并不需要我们操作(操作系统里面有中断的概念),由编译器做好。

C语言程序中中断的执行流程:
一般中断程序都是在一个子函数里面,这个函数不需要我们调用,当中断来临时,由硬件自动调用这个函数。

STM32中断

在这里插入图片描述
中断通道就是中断源的意思,68个是F1系列最多的中断数量,对于一个具体的型号来说,可能没有这么多中断,所以这个数量看看就行,具体以对应型号的数据手册为准。
STM32的中断非常多,几乎所有模块都能申请中断,

NVIC就是STM32中用来管理中断,分配优先级的。

在这里插入图片描述
灰色的部分是内核的中断,
1.Reset复位中断 当产生复位事件时,程序就会自动执行复位中断函数,也就是复位后程序开始执行的位置
2.后面的各种灰色的中断都是内核里面的,一般比较高深,看上去也难理解,但是这些中断我们一般用不到,所以了解一下即可

不是灰色的部分的:就是STM32外设的中断了。
比如:
WWDG 窗口看门狗,用来监测程序运行状态的中断,比如程序卡死了,没有及时喂狗,窗口看门狗就会申请中断,程序就会调到窗口看门狗的中断程序里,在中断程序里就可以进行一些错误检查,看看出现什么问题了。
PVD 电源电压监测,如果供电电压不足,PVD电路就会申请中断,在中断里就知道,现在供电不足,是不是电池没电了,要赶紧保存一下重要数据。
TAMPER 外设电路检测到异常或者什么事件,需要提示CPU的时候,就可以申请中断,让程序调到对应的中断函数里运行,用来处理异常或事件
EXTI0-EXTI4,EXTI9_5-EXTI15_10就是本节外部中断对应的中断资源。

中断的地址的作用:因为程序中的中断函数,它的地址由编译器分配的,是不固定的。但是中断的跳转,由于硬件限制,只能跳转到固定的地址执行程序,所以为了能让硬件跳转到一个不固定的中断函数里面,就需要在内存中定义一个地址的列表。这个列表地址固定,中断发生后,就跳到这个固定位置。然后有编译器再加上一条跳转到中断函数的代码,这样中断函数就可以跳转到任意位置了。
中断地址的列表:叫做中断向量表,相当于中断跳转的一个跳板。(不过C语言编程不需要管这个中断向量表,因为编译器帮我们做好了)

在这里插入图片描述
在这里插入图片描述

NVIC嵌套中断向量控制器基本结构

在这里插入图片描述
在STM32中,NVIC用来统一分配中断优先级和管理中断的,NVIC是一个内核外设,是CPU的小助手。
STM32中断非常多,如果把中断都接到CPU上,那么CPU得引出很多线进行适配,设计上就很麻烦,并且很多中断同时申请,或者中断很多产生了拥堵,CPU就很难处理,毕竟CPU主要用来做运算的。所以中断分配的任务就放到别的地方。所以NVIC就出现了。
NVIC有很多输入口,有多少个中断线路,都可以接过来。(这里斜杠上写个n,意思是一个外设可能会同时占用多个中断通道,所以有n条线),

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

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

相关文章

《算法笔记》总结No.6——贪心

一.简单贪心 贪心法是求解一类最优化问题的方法,它总是考虑在当前状态下局部最优(或较优)之后,来使全局的结果达到最优(或较优)的策略。显然,如果采取较优而非最优的策略(最优策略可能不存在或是不易想到),得到的全局结果也无法是…

【深入理解JVM】关于Object o = new Object()

1. 解释一下对象的创建过程 “半初始化”状态通常指的是对象在内存分配后、但在完全初始化之前的一种状态。在Java中,虽然JVM的规范和设计努力避免对象处于这种不稳定的状态,但在多线程环境下,由于指令重排序等并发问题,仍有可能…

【LeetCode刷题笔记】LeetCode.24.两两交换链表中的节点

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

新手小白的pytorch学习第一弹-------张量

1 导入pytorch包 import torch2 创建张量&#xff08;tensor&#xff09; scalar标量 scalar torch.tensor(7) scalartensor(7)scalar.ndim查看scalar的维度&#xff0c;因为scalar是标量&#xff0c;所以维度为0 0scalar.shapetorch.Size([])torch.item()7vector&#xf…

Apache功能配置:访问控制、日志分割; 部署AWStats日志分析工具

目录 保持连接 访问控制 只允许指定ip访问 拒绝指定主机其他正常访问 用户授权 日志格式 日志分割 操作步骤 使用第三方工具cronolog分割日志 AWStats日志分析 操作步骤 访问AwStats分析系统 保持连接 Apache通过设置配置文件httpd-default.conf中相关的连接保持参…

基于Java的科大讯飞大模型API调用实现

写在前面&#xff1a;因为现在自己实习的公司新拓展的一个业务是结合AI的低代码平台&#xff0c;我负责后端的开发&#xff0c;之前一直都是直接使用gpt或者文心一言等ui界面来直接使用大模型&#xff0c;从来没有自己调接口过&#xff0c;所以本文记录一下自己第一次使用大模型…

【QT】QComboBox允许输入查询,且不区分大小写

目录 0.简介 1.环境 2.详细代码 3.参考 0.简介 项目需求&#xff0c;原本有一个下拉框&#xff0c;但是条目太多&#xff0c;不好搜索&#xff0c;所以用户要求可以输入查找 修改前 &#xff1a; 修改后&#xff1a; 1.环境 windows11 vs-code qt5.12 2.详细代码 QComboB…

MD5加密和注册页面的编写

MD5加密 1.导入包 npm install --save ts-md5 2.使用方式 import { Md5 } from ts-md5; //md5加密后的密码 const md5PwdMd5.hashStr("123456").toUpperCase(); 遇见的问题及用到的技术 注册页面 register.vue代码 <template><div class"wappe…

关于Python中的字典你所不知道的七个技巧

01 引言 Python是我最喜欢的编程语言之一&#xff0c;它向来以其简单性、多功能性和可读性而闻名。 字典作为Python中最常使用的数据类型&#xff0c;大家几乎每个人都或多或少在项目中使用过字典&#xff0c;但是字典里有一些潜在的技巧可能并不是每个同学都会用到。 在本文…

【UE5.1 角色练习】16-枪械射击——瞄准

目录 效果 步骤 一、瞄准时拉近摄像机位置 二、瞄准偏移 三、向指定方向射击 四、连发 效果 步骤 一、瞄准时拉近摄像机位置 打开角色蓝图&#xff0c;在事件图表中添加如下节点&#xff0c;当进入射击状态时设置目标臂长度为300&#xff0c;从而拉近视角。 但是这样切…

勇攀新高峰|暴雨信息召开2024年中述职工作会议

7月8日至9日&#xff0c;暴雨信息召开2024年中述职工作会议&#xff0c;总结回顾了上半年的成绩和不足&#xff0c;本次会议采用线上线下的方式举行&#xff0c;公司各部门管理人员、前台市场营销人员参加述职&#xff0c;公司领导班子出席会议。 本次述职采取了现场汇报点评的…

数字滚动动画~

前言 数字从0.00滚动到某个数值的动画 实现&#xff08;React版本&#xff09; Dom <div className"number" ref{numberRef}>0.00</div> JS const _initNumber () > {const targetNumber 15454547.69;const duration 1500;const numberElement…

【UML用户指南】-33-对体系结构建模-系统和模型

目录 1、系统和子系统 2、模型和视图 3、跟踪 4、常用建模技术 4.1、对系统的体系结构建模 4.2、对系统的系统建模 模型是对现实世界的简化——即对系统的抽象&#xff0c;建立模型的目的是为了更好地理解系统。 1、系统和子系统 一个系统可能被分解成一组子系统&#…

09.C2W4.Word Embeddings with Neural Networks

往期文章请点这里 目录 OverviewBasic Word RepresentationsIntegersOne-hot vectors Word EmbeddingsMeaning as vectorsWord embedding vectors Word embedding processWord Embedding MethodsBasic word embedding methodsAdvanced word embedding methods Continuous Bag-…

esp32硬件电路设计

ESP-IDF 入门指南 | 乐鑫科技 (espressif.com) ESP32-DevKitC V4 入门指南 - ESP32 - — ESP-IDF 编程指南 v5.1 文档 (espressif.com)

每日一题~abc356(对于一串连续数字 找规律)

添加链接描述 题意&#xff1a;对于给定的n,m 。计算0~n 每一个数和m & 之后&#xff0c;得到的数 的二进制中 1的个数的和。 一位一位的算。最多是60位。 我们只需要计算 在 1-n这些数上&#xff0c;有多少个数 第i位 为1. 因为是连续的自然数&#xff0c;每一位上1 的…

Linux下的misc设备驱动

文章目录 前言一、misc是什么&#xff1f;二、调用API1.注册2.注销 三、驱动框架总结 前言 misc设备即杂项设备&#xff0c;Linux系统中类似按键、触摸屏都有专门框架处理&#xff0c;类似adc、蜂鸣器等设备无法明确其属于什么类型&#xff0c;一般就归属于杂项设备&#xff0…

Sqli-labs合集之环境搭建

Sqli-labs的搭建 搭建第一个SQL注入学习靶场环境&#xff1a; 软件&#xff1a;sqli-labs 安装过程&#xff1a; 1.源码地址&#xff1a;GitHub - Audi-1/sqli-labs: SQLI labs to test error based, Blind boolean based, Time based.&#xff1b; 2.将压缩包解压到phpst…

非线性系列(三)—— 非线性求解器算法分类

1. 总体认知 CAE中的非线性方程组求解主要依赖牛顿法&#xff08;及牛顿法的变体&#xff09;&#xff0c;步骤如下 以线搜索方法为例&#xff0c;流程如下: 2. 方法分类 适用范围大类小类描述牛顿法雅可比矩阵难获取拟牛顿法 Broyden&#xff08;Secant method&#xff09;、…

15. Revit API: Transaction(事务)与 Failures(故障处理)

前言 UI讲完&#xff0c;回到DB这块儿。在Document那篇&#xff0c;提到增删改查操作都是在Document上&#xff0c;是对Documet进行操作。 看到“增删改查”这四个&#xff0c;想到什么了没有&#xff1f; 数据库&#xff08;DB&#xff09;嘛~话说那本经典的红皮数据库的书叫…