STM32中断设置以及中断优先级设置-不含代码例程

news2025/1/10 23:59:03

本项目使用到的是STM32F030C8型号的MCU,我们可以从官方下载到的标准库文件中的启动汇编文件中,查看到本型号单片机的外部中断向量表。(如下图所示)

在这里插入图片描述

首先,我们了解一下NVIC是什么,在core_cm0.h文件中的标准库中的NVIC结构体。

在这里插入图片描述

其中,我们一般只用到ISER、ICER、IP这3个寄存器。ISER用于使能中断,ICER用来清除中断,IP用来设置中断优先级。

其次,我们了解一下中断优先级,中断优先级寄存器NVIC_IPRx,本寄存器宽度为8位,原则上每个外部中断可配置的优先级为0~255,实际上精简了,只用到了它的高4位。这4位,又被分成了抢占优先级和响应优先级两组,然后,中断优先级有分为以下几种情况:

1、抢占优先级不同,会涉及到中断嵌套,抢占优先级高的会优先抢占优先级低的,优先得到执行。(注意:优先级数字越小,优先级越高)

2、抢占优先级相同,不涉及到中断嵌套,响应优先级不同,响应优先级高的先响应。(例如:两个中断同时响应,这里就会先执行响应优先级高的那个中断)(注意:优先级数字越小,优先级越高)

3、抢占优先级和响应优先级都相同,则比较它们的硬件中断编号,中断编号越小,优先级越高。(硬件中断编号从中断向量表当中查看)

中断优先级分组,因为中断优先级只使用了高4位,所以,中断优先级的分组分别有以下几种情况:

优先级分组抢占优先级响应优先级描述
NVIC_PriorityGroup_000到15的取值高4位全部是响应优先级,无抢占优先级
NVIC_PriorityGroup_10到1的取值0到7的取值抢占优先级为1位,响应优先级为3位
NVIC_PriorityGroup_20到3的取值0到3的取值抢占优先级为2位,响应优先级为2位
NVIC_PriorityGroup_30到7的取值0到1的取值抢占优先级为3位,响应优先级为1位
NVIC_PriorityGroup_40到15的取值0高4位全部是抢占优先级,无响应优先级

最后,总结一下中断编程的三步曲:

第一步:使能外设某个中断,具体由对应的中断使能位控制。

(例如:我们使用到GPIO之前必须开启GPIO端口的时钟,用到EXTI必须开启AFIO时钟)

第二步:初始化NVIC_InitTypeDef结构体,配置中断优先级分组,设置抢占优先级和响应优先级,使能中断请求。

库函数:

NVIC_IRQChannel()设置不同的中断源,在IRQn_Type IRQn结构体寻找自己对应的中断源。

NVIC_IRQChannelPreemptionPriority()设置抢占优先级

NVIC_IRQChannelCmd() 中断使能或者取消使能

第三步:编写中断服务函数,在stm32f0xx_it.c文件中,都有一个根据中断向量表,实现的一个空的中断服务函数,需要我们自己重新编写。

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

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

相关文章

海川润泽“巧克力”DTU强势来袭

1、设备介绍 “巧克力”DTU(型号:HCRZ-DTU200),它可以实现远程通信、安全传输等功能,提高了传输的效率和可靠性。采用全新工业级设计,灵活应用于不同场景。此款DTU体积小(76mm31mm21.8mm)、重量轻(150g),安装简便&…

「任务派发」上线,高效管理跨平台营销任务

作为企业矩阵号相关业务的负责人,您在工作中是否遇到: 下达一个营销任务,需要在几十上百个群里沟通对接?任务发布后,无法掌握各运营者执行情况?账号数据难回收,无法检验任务完成效果&#xff1…

阿里云携手开放原子开源基金会倡议发起云原生工作委员会,两大开源项目达成捐赠意向

6月11日,2023开放原子全球开源峰会正式拉开帷幕。本届峰会以“开源赋能,普惠未来”为主题,设置了开幕式暨高峰论坛、20余场分论坛和开源成果及重点项目展览。在峰会主论坛,开放原子开源基金会理事长孙文龙协各家单位共同倡议发起云…

抖音加码自营电商,拿什么做出差异化?

今年618期间,抖音电商可谓是花尽了心思。不仅推出了补贴活动,上架了单品超值购、商城频道主题日、搜索彩蛋等玩法,而且在售后方面,还推出了“安心购”服务,可提供“七天无理由退货”“极速退款”“运费险”“过敏包退”…

关于QTreeView使用自定义Tree Model时,插入子项目时,扩展箭头不显示的问题

在使用自定义的TreeModel显示数据时,添加子项目后,扩展箭头不显示,但是点击原来扩展箭头在的地方时,树仍能够展开添加的子项目。 经过研究发现,QTreeView有以下代码: 说明如果调用的beginInserRows中的par…

Apikit 自学日记: 如何创建/生成 API 文档

在 API 研发管理产品中,几乎所有的协作工作都是围绕着 API 文档进行的。 我们在接触了大量的客户后发现,采用 文档驱动 的协作模式会比先开发、后维护文档的方式更好,团队协作效率和产品质量都能得到提高。因此我们建议您尝试基于文档来进行工…

vite预渲染 vite-plugin-prerender 大坑记录

本文部分配置转自:vite预渲染怎么实现_猿耳盗铃的博客-CSDN博客 懒得重新写,贴下版本和自己踩的各种坑吧 以下为版本,本文只给vite vue3的建议,不一定适用,因为正常情况能build成功,我昨天中午之前一直没…

JUC高级-0614

5.LockSupport与线程中断 5.1 线程中断 蚂蚁金服面试题:如何中等一个线程,如何停止一个线程什么是中断机制 首先:一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.…

不用编程超简单的自动化测试工具:Airtest入门篇教程

目录 一、背景 二、什么是Airtest 三、Airtest下载安装 四、Airtest入门使用教程 4.1 连接设备: 4.2 具体测试场景案例: 五、总结 一、背景 很多刚入行或从其他行业转行做测试的同学,日复一日每天做点工已经点得疲惫和麻木&#xff…

数仓架构“瘦身”,Hologres 5000CU时免费试用

Hologres基于创新的HSAP架构,可以将您原先数仓架构中的OLAP系统(Greenplum、Presto、Impala、ClickHouse)、KV数据库/Serving系统(HBase、Redis)统一在一个大数据计算引擎中,并提供快速的离线实时一体化分析…

企业如何搭建公司的宿舍管理系统?让数字化改变新的管理方式

什么是企业宿舍管理系统 企业宿舍管理系统是一种用于管理企业宿舍的软件。它可以帮助企业更好地管理公司的宿舍,包括员工选房、入住登记、租金管理、公共设施预订等。该系统通常使用计算机和互联网技术,以便更高效地处理和记录与宿舍相关的活动和任务。…

【Nginx】Ubuntu23.04 安装Nginx

Ubuntu23.04 安装Nginx 1.官方文档2.命令补充 1.官方文档 ❤️ 根据Nginx官方文档在Ubuntu23.04版本上安装Nginx,直接跟随步骤复制命令即可。 → Nginx官方Ubunt安装文档 如图: 这里复制了一份,并翻译了: 安装必备组件&#xff1…

【剑指offer专项突破版】哈希表篇——“C“

文章目录 前言一、插入、删除和随机访问都是 O(1) 的容器题目分析思路分析代码 二、最近最少使用缓存题目分析思路分析代码 三、有效的变位词题目分析代码 四、变位词组题目分析思路分析代码 五、外星语言是否排序题目分析思路分析代码 六、最小时间差题目分析思路分析代码①—…

与行业协会共同探索创新前景:B端企业如何拓展品牌与业务增长

B端营销中行业协会是一个非常重要的渠道和抓手,因为这基本上是由企业产品的目标客户组成,但如何利用好行业协会,并低成本的拓展业务需要结合自身业务特点进行规划设计。 Oliver Du 一、行业协会的运作机制与权利结构 行业协会是由行业内的企…

【二等奖方案】系统访问风险识别「LOL四缺一」团队解题思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束。大赛官方竞赛平台DataFountain(简称DF平台)将陆续释出各赛题获奖队伍的方案思路。本方案为【系统访问风险识别】赛题的二等奖获奖方案,赛题地址:…

从原理到实践,分析 Redis 分布式锁的多种实现方案(一)

一、为什么要用分布式锁 在分布式系统中,为了保证多个进程或线程之间的数据一致性和正确性,需要使用锁来实现互斥访问共享资源。然而,使用本地锁在分布式系统中存在问题。 本地锁的问题 无法保证全局唯一性:本地锁只在本地生效&…

2023年打印机电商市场数据分析

近年来,伴随自动化办公及在线教育等场景的常态化,文件或学习资料等的打印需求不断增长,这也使得打印机需求暴增,打印机市场的市场规模也越来越大。 根据鲸参谋电商平台的相关数据显示,今年1月份至4月份,打印…

进程等待

文章目录 一、进程的结果二、进程等待 一、进程的结果 在现实生活中找别人帮忙办事,别人同意帮忙之后,会反馈给自己的结果无非就是三种: 别人把事办完了,结果是自己想要的别人把事办完了,由于办事的方法错误&#xf…

利用代理ip实现自动化爬虫任务管理

我们在进行爬虫任务管理时,需要对爬取目标、爬取频率、数据存储等多个方面进行规划和管理。使用HTTP代理可以帮助我们提高爬虫效率,同时也可以实现自动化的爬虫任务管理。下面我们来分析一下怎么利用代理ip实现自动化爬虫任务管理。 一、选择代…

Server - 配置 Kubeflow Notebooks 的 JupiterLab 环境

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131231501 Kubeflow 的 Notebook 功能是一种方便的方式,让用户可以在 Kubernete s集群上创建和管理交互式的 Jupyter Notebo…