STM32学习和实践笔记(15):STM32中断系统

中断概念

CPU执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU

时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序

或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序

继续执行,这一过程称为中断。引发中断的称为中断源。比如:看电视

时突然门铃响,那么门铃响就相当于中断源。

有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套

NVIC英文全称是Nested Vectored Interrupt Controller,嵌套(Nested)向量(Vectored)中断控制器(Interrupt Controllerv)

它属于M3内核的一个外设,控制着芯片的中断相关功能。由于ARMNVIC预留了非常多的功能,但对于使用M3内核设计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST公司的STM32F103芯片内部中断数量就是NVIC裁剪后的结果。

中断控制相关寄存器在固件库core_cm3.h文件NVIC结构体内。可打开任意库函数工程即可查看到,如下:

中断优先级

如上表所示,开发板上使用的STM32F103芯片支持60个可屏蔽中断通道(即上表中的0-59),和16个内核中断。

表中的位置栏,是指在同样优先级的顺序下,优先处理哪一个中断,数值越小,优先级越高。

表中的优先级栏是自然优先级,是指在没有设置的情况下的优先级。数值越小,优先级越高。可以看到,内核的复位中断,其优先级是-3,表明是最高优先级。而通常写程序中断时,都会配置。

表中的优先级类型就是写程序时可以自己配置的,可以看到,绝大多数中断源都是可以自己配置中断优先级的。

这些可设置中断优先级的中断源,每个都有一个8位的中断优先级控制寄存器,但是在实际中只使用了4位。

而这4位又可以配置5种组合方式如下

以图中的优先级组别2组为例,4位的高两位分成占先式优先级,两位就可以分成4级。同理,副优先级也占了2位,也有4级。

现在假定有两个中断,比如上表中的TIM6和TIM7,当他们都向CPU发出中断请求时,CPU将怎样决定先进入哪一个中断服务程序?

很简单,首先比较这两个中断的占先式优先级的,看哪一个的占先式优先级的数值更小,就先执行哪个。

甚 至就算CPU正在执行一个中断,只要新的中断的占先式优先级的数值更小,它就会先执行这个新的中断,这个就是中断的嵌套。

无论是CPU正执行一个中断而来了一个新的中断,还是CPU没有执行中断而新来了两个中断,只要两个中断的占先式优先级相同,那么都不会发生中断的嵌套。

如果占先式优先级相同,就比较两个同时到达的中断的副先级(又叫响应式优先级),先运行副先级更高的中断。

如果如果占先式优先级相同,两个副先级虽然不同的中断,先后到达,那么先运行先到达的中断,后面的中断到来后,就算其副先级更高,也不能抢断,只能等到前面中断运行后再运行。

如果占先式优先级和副先级都相同中断进行比较,就根据上表中的位置(其实就是自然优先级)顺序来决定。

以上理清逻辑关系,其实并不复杂~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

飞桨Ai(二)paddle使用CPU版本可以正常识别,切换为GPU版本时无法识别结果

一、问题描述: 刚开始用paddle的CPU版本,对训练好的模型进行推理,正常识别出想要的结果后来尝试使用paddle的GPU版本,然后发现识别出来是空的 二、系统思路: 最终系统环境如下: 系统:win10 …

有哪些公认好用且免费的云渲染网渲平台?渲染100邀请码1a12

现在云渲染是越来越火了,无论是在建筑设计、影视动画还是效果图行业都有它的身影,云渲染能缩短制作周期,提高工作效率,那么市面上有哪些公认好用且免费的云渲染平台呢?这次我们来了解下。 首先,我们来看看有…

vulfocus靶场tomcat-cve_2017_12615 文件上传

7.0.0-7.0.81 影响版本 Windows上的Apache Tomcat如果开启PUT方法(默认关闭),则存在此漏洞,攻击者可以利用该漏洞上传JSP文件,从而导致远程代码执行。 Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多…

「GO基础」在Windows上配置VS Code GO语言开发环境

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

查看linux的主机配置脚本

废话不说 直接上指令 curl -Lso- bench.sh | bash 等待后,结果如图: 使用后没有问题,看情况使用 出事概不负责 介意勿用!!!

LD-Pruner、EdgeFusion(On-Device T2I)、FreeDiff、TextCenGen、MemLLM

本文首发于公众号:机器感知 https://mp.weixin.qq.com/s/KiyNfwYWU-wBiCO-hE9qkA 苏 The devil is in the object boundary: towards annotation-free instance segmentation using Foundation Models Foundation models, pre-trained on a large amount of data…

Windows系统下安装paddle

开始使用_飞桨-源于产业实践的开源深度学习平台 (paddlepaddle.org.cn) 命令行下: python -m pip install --upgrade pip --user python -m pip install paddlepaddle2.6.1 -i https://pypi.tuna.tsinghua.edu.cn/simple 报异常 ERROR: Could not install packa…

Jmeter 测试Dubbo接口-实例

1、Dubbo插件准备 ①把jmeter-plugins-dubbo-2.7.4.1-jar-with-dependencies.jar包放在D:\apache-jmeter-5.5\lib\ext目录 ②重新打开Jmeter客户端 在线程组-添加-取样器-dubbo simple,添加dubbo接口请求 2、Jmeter测试lottery接口 ①配置zookeeper参数 由于dub…

windows和虚拟机互传文件

在虚拟机中设置共享文件夹 操作方法:打开VMware–>虚拟机–>设置–>选项–>共享文件夹(见下图),大家在共享文件夹当中就可以把Windows当中的D盘或者其它盘共享到虚拟机中。比如我就是将D盘和E盘共享到了虚拟机中。 共…

【Vue】实现显示输入框字符长度

<div style"float: right; margin-right: 10px"><el-popover placement"top-start" width"200" trigger"hover" :content"当前输入的内容字节长度为&#xff1a; this.byteLength &#xff0c;剩余可输入的字节长度和最…

学校管网的仿写

工字形布局完成 效果 代码部分 在这里插入代码片 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport…

某书Frida检测绕过记录

某书Frida检测绕过记录 前言Frida启动APPHook android_dlopen_ext查看加载的库分析libmsaoaidsec.soFrida检测绕过后记 前言 本来想要分析请求参数加密过程&#xff0c;结果发现APP做了Frida检测&#xff0c;于是记录一下绕过姿势(暴力但有用) Frida版本&#xff1a;16.2.1 AP…

ctfhub-ssrf(2)

1.URL Bypass 题目提示:请求的URL中必须包含http://notfound.ctfhub.com&#xff0c;来尝试利用URL的一些特殊地方绕过这个限制吧 打开环境发现URL中必须包含http://notfound.ctfhub.com&#xff0c;先按照之前的经验查看127.0.0.1/flag.php,发现没什么反应&#xff0c;按照题…

vue和react通用后台管理系统权限控制方案

1. 介绍 在任何企业级应用中&#xff0c;尤其是后台管理系统&#xff0c;权限控制是一个至关重要的环节。它确保了系统资源的安全性&#xff0c;防止非法访问和操作&#xff0c;保障业务流程的正常进行。本文件将详细解析后台管理系统中的权限控制机制及其实施策略。 那么权限…

Linux:zabbix自定义监控项(6)

本章去做一个监控ftp服务是否正常启动的监控项目 大概就是先创建一个模板&#xff0c;我们把要做的东西放入这个模板&#xff0c;然后把这个模板应用到某个监控主机上就可以生效 1.准备监控项脚本 其中的核心就是&#xff0c;通过脚本去判断一个东西的数值&#xff0c;通过这个…

算法刷题记录2

4.图 4.1.被围绕的区域 思路&#xff1a;图中只有与边界上联通的O才不算是被X包围。因此本题就是从边界上的O开始递归&#xff0c;找与边界O联通的O&#xff0c;并标记为#&#xff08;代表已遍历&#xff09;&#xff0c;最后图中剩下的O就是&#xff1a;被X包围的O。图中所有…

【Linux】进程和计划任务

目录 一、进程介绍 1.1 进程与线程的定义 1.1.1 进程(Process)** 1.1.2 线程(Thread)** 1.1.3 进程与线程的区别 1.2 进程的特征 1.3 进程状态 1.3.1 进程的基本状态 1.3.2 进程更多的状态 1.4 进程的优先级 1.5 进程间通信 1.6 进程的分类* 二、进程管理 2.1 查看…

java核心类

一,String字符串 1.1,String字符串是引用类型,且不可变 String str1 "Hello";String str2 str1.concat(" World"); // 使用concat方法连接字符串&#xff0c;返回一个新的字符串对象System.out.println(str1); // 输出&#xff1a;Hello&#xff0c;原始…

[大模型]InternLM2-7B-chat langchain 接入

InternLM2-7B-chat langchain 接入 InternLM2 &#xff0c;即书生浦语大模型第二代&#xff0c;开源了面向实用场景的70亿参数基础模型与对话模型 &#xff08;InternLM2-Chat-7B&#xff09;。模型具有以下特点&#xff1a; 有效支持20万字超长上下文&#xff1a;模型在20万…

Hadoop3:大数据的基本介绍

一、什么是大数据 1、大数据的4v特点 Volume&#xff08;大量&#xff09; Velocity&#xff08;高速&#xff09; Variety&#xff08;多样&#xff09; Value&#xff08;低价值密度&#xff09; 2、大数据部门间的工作岗位 第三部分&#xff0c;其实就是JavaWeb 二、…