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

STM32如何使用中断?

一:EXTI 简介

STM32F10x 外部中断/事件控制器(EXTI)包含多达 20 个用于产生事件/中断请求的边沿检测器。

EXTI 的每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升

沿触发、下降沿触发或边沿触发),还可独立地被屏蔽。

二:EXTI 配置步骤

(EXTI 相关库函数在 stm32f10x_exti.c 和stm32f10x_exti.h 文件中)

(1)使能 IO 口时钟,配置 IO 口模式为输入

(2)开启 AFIO 时钟,设置 IO 口与中断线的映射关系

1、使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
2、将端口A 映射 引脚0
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource15);

(3)配置中断分组(NVIC),使能中断

EXTI产生中断线 ---> 流向NVIC

NVIC初始化

NVIC_InitTypeDef NVIC_InitStructure; 
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;    //EXTI15 中断通道 
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2; //抢占优先级 
NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;      //子优先级 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;        //IRQ 通道使能 
NVIC_Init(&NVIC_InitStructure);                       //根据指定的参数初始化 VIC 寄存器

(4)初始化 EXTI,选择触发方式

文件在stm32f10x_exti.c和 stm32f10x_exti.h 当中

void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);

函数形参是有一个结构体 EXTI_InitTypeDef 类型的指针变量

typedef struct 
{ uint32_t EXTI_Line;                 //中断/事件线  EXTIMode_TypeDef EXTI_Mode;         //EXTI 模式 EXTITrigger_TypeDef EXTI_Trigger;  //EXTI 触发方式 FunctionalState EXTI_LineCmd;       //中断线使能或失能 
}EXTI_InitTypeDef;EXTI_Line:EXTI 中断/事件线选择,可配置参数为 EXTI0-EXTI20,可参考上表。
EXTI_Mode:EXTI 模式选择,可以配置为中断模式 EXTI_Mode_Interrupt 和事件模式 EXTI_Mode_Event。 
EXTI_Trigger:触发方式选择,可以配置为上升沿触发 EXTI_Trigger_Rising、下降沿触发 EXTI_Trigger_Falling、上升沿和下降沿触EXTI_Trigger_Rising_Falling 。
EXTI_LineCmd:中断线使能或者失能,配置 ENABLE 为使能,DISABLE 为失能,我们这里要使用外部中断,所以需使能

(5)编写 EXTI 中断服务函数

中断服务函数名是固定的,在开始文件startup_stm32f10x_md.s 当中寻找

EXTI0_IRQHandler         
EXTI1_IRQHandler         
EXTI2_IRQHandler         
EXTI3_IRQHandler         
EXTI4_IRQHandler
EXTI15_10_IRQHandler     

stm32f10x_exti.h 函数

stm32f10x_exti.h 函数将外设 EXTI 寄存器重设为缺省值
void EXTI_DeInit(void);根据 EXTI_InitStruct 中指定的参数初始化外设 EXTI 寄存器
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);把 EXTI_InitStruct 中的每一个参数按缺省值填入
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);产生一个软件中断
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line); EXTI_Line:待使能或者失能的 EXTI 线路检查指定的 EXTI 线路标志位设置与否
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);EXTI_Line:待检查的 EXTI 线路标志位清除 EXTI 线路挂起标志位
void EXTI_ClearFlag(uint32_t EXTI_Line);EXTI_Line:待清除标志位的 EXTI 线路检查指定的 EXTI 线路触发请求发生与否
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);EXTI_Line:待检查 EXTI 线路的挂起位清除 EXTI 线路挂起位
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);EXTI_Line:待清除 EXTI 线路的挂起位

相关文章:

STM32如何使用中断?

一:EXTI 简介 STM32F10x 外部中断/事件控制器(EXTI)包含多达 20 个用于产生事件/中断请求的边沿检测器。 EXTI 的每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升 沿触…...

用于物体识别和跟踪的下游任务自监督学习-2-(计算机视觉中的距离度量+损失函数)

2.4 计算机视觉中的距离度量 在深度学习和计算机视觉中,距离度量通常用于比较图像、视频或其他数据的特征或嵌入。根据具体任务和数据属性,可以使用不同类型的距离度量。下面介绍了深度学习和计算机视觉中使用的一些常见类型的距离度量。 余弦相似性距…...

热成像仪的工作原理及在工业设备状态监测中的应用

前面我们介绍过>>热分析技术在工业设备状态监测中的应用,下面我们将深入探讨热成像仪的工作原理及在工业设备状态监测中的应用。 近年来,热成像仪作为一种先进的检测工具,在工业设备状态监测领域得到了广泛的应用。热成像仪能够通过探测…...

什么是库存管理?无需Excel,2023年这几款大热库存管理软件你get了吗?

什么是库存管理?库存管理是什么意思?都有哪些好用的库存管理系统?相信这些都是大家非常关注的话题,这篇就跟大家详细唠唠什么是库存管理,都用什么系统可以进行库存管理,并且为大家盘点2023年这几款大热库存…...

c# xml 参数配置表的使用

使用简介 实际使用界面 配置表管理界面 进入 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;…...

ubuntu20.04 nerf Instant-ngp

Instant-ngp linux ubuntu 20.04 GPU RTX3050Ti Instant-ngp官方文档地址 https://github.com/NVlabs/instant-ngp 参考链接Instant-ngp linux部署及使用 - 简书 Ubuntu20.04复现instant-ngp,自建数据集,导出mesh_XINYU W的博客-CSDN博客 步骤 安装基…...

隐写术--python隐写

0x00 背景 何为隐写术? 隐写术是一类可以隐藏自己写的一些东西的方法,是一门关于信息隐藏的技巧与科学。指的是采取一些不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容的方法。 可参考 一文让你完全弄懂Stegosaurus - 知乎 本文要…...

MySQL的InnoDB存储引擎中的自适应哈希索引技术

一、自适应哈希索引的工作机制与优化策略 MySQL的InnoDB存储引擎使用了一种叫做自适应哈希索引(Adaptive Hash Indexes)的技术。在某些索引值被频繁访问的情况下,InnoDB会自动在内存中为这些值建立哈希索引,以加速查询操作。 何…...

交互设计主要做什么?新手入门必读

什么是交互设计?它涉及哪些内容?交互设计师是什么样的人群?他们到底是做什么的?他们身怀什么技能?他们工作的价值在哪里?交互设计行业的现状是怎样的?工作前景又是如何的? 如果你心…...

【深度学习实验】循环神经网络(三):门控制——自定义循环神经网络LSTM(长短期记忆网络)模型

目录 一、实验介绍 二、实验环境 1. 配置虚拟环境 2. 库版本介绍 三、实验内容 0. 导入必要的工具包 1. LSTM类 a.__init__(初始化) b. init_state(初始化隐藏状态) c. forward(前向传播) 2. RNNModel类 a.__init__&am…...

flutter 消息并发时处理,递归查询

收到新消息的时候执行receiveNewConversation方法 可以自己模拟一下两条数据插入,延时执行插入会话的操作 收到一条新的会话消息,先记录会话ID到列表,直到第一条处理完(插入数据库后清理这个会话ID),才处理…...

第五十八章 学习常用技能 - 查看查询缓存

文章目录 第五十八章 学习常用技能 - 查看查询缓存查看查询缓存建立索引使用调谐表工具 第五十八章 学习常用技能 - 查看查询缓存 查看查询缓存 对于 SQL(用作嵌入式 SQL 时除外),系统会生成可重用代码来访问数据,并将该代码放置…...

AI 辅助学 Java | 专栏 1 帮你学 Java

在利用 ChatGPT 辅助学 Java 之前,你得先知道,它到底能辅助你干什么?如何能帮你更好的学习 Java。 苍何:作为一个语言模型,你能给 Java 的初学者提供什么帮助?请罗列具体的点。 ChatGPT:当你是一个 Java 初学者时,我可以提供以下具体的帮助和指导: 基本语法和语言特…...

2023_Spark_实验十六:编写LoggerLevel方法及getLocalSparkSession方法

一、搭建Spark项目结构 在SparkProject模块的pom.xml文件中增加一下依赖&#xff0c;并等待依赖包下载完毕&#xff0c;如上图。 ​<!-- Spark及Scala的版本号 --><properties><scala.version>2.11</scala.version><spark.version>2.1.1</sp…...

彻底搞懂:防止表单重复提交,前端限制还是后端限制?

欢迎大家来到小米的技术分享专栏&#xff01;今天我将为大家带来一个热门话题&#xff1a;如何有效地防止表单重复提交。在开发中&#xff0c;我们常常会遇到这样的问题&#xff1a;用户频繁点击提交按钮&#xff0c;导致数据重复提交&#xff0c;给系统和用户体验带来不必要的…...

OCPP1.6协议

目录 导言 功能简介 本地授权列表 类型 IdToken IdTagInfo 授权状态 协议指令 1、授权 1.1 说明 1.2 Authorize.req 1.3 Authorize.conf 1.4 JSON格式 1.5 代码 2、启动通知 2.1 说明 2.2 BootNotification.req 2.3 BootNotification.conf 2.4 JSON格式 2…...

【数据存储:小端模式和大端模式】

一、引言 在计算机科学中&#xff0c;数据存储模式是指如何将数据存储在计算机内存中的方式。小端模式和大端模式是两种主要的字节序方式&#xff0c;它们决定了字节在内存中的排列顺序。这种字节顺序的选择对于跨平台编程和数据传输至关重要。在这篇博客中&#xff0c;我们将…...

【git】gitlab安装、备份

gitlab官网 官网&#xff1a;官网 中文官网&#xff1a;中文官网 作为一个英文不好的程序员&#xff0c;所以我都去中文网站去看了。下面也是带着大家去走走 安装gitlab 我不想写具体的安装方法&#xff0c;直接去逛网看下面是我的截图。步骤非常详细。 安装文档地址&…...

C51--基本认知

单片机基本认知&#xff1a; 1、什么是单片机 单片机是一种集成电路芯片。 把具有数据处理能力的中央处理器 CPU、随机存储器RAM、只读存储器ROM。 多种 I / O 口和中断系统、定时器/计数器等功能&#xff08;可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器…...

centos7 安装 mysql 8.0

文章目录 环境介绍一、安装前准备 1.卸载MariaDB 1.1 查看是否安装mariadb1.2 卸载1.3 检查是否卸载干净 2.检查依赖 2.1 查看是否安装libaio2.2 查看是否安装numactl 二、安装MySQL 1.下载资源包 1.1 官网下载1.2 wget下载 2.解压3.重命名4.创建存储数据文件5.设置用户组并赋…...

Vue15 计算属性VS监视属性(侦听属性)

计算属性VS监视属性&#xff08;侦听属性&#xff09; computed和watch之间的区别&#xff1a; 1.computed能完成的功能&#xff0c;watch都可以完成。 2.watch能完成的功能&#xff0c;computed不一定能完成&#xff0c;例如&#xff1a;watch可以进行异步操作。 两个重要的小…...

快速全面掌握数据库系统核心知识点

快速全面掌握数据库系统核心知识点 一、数据库系统二、三级模式-两层映射三、三级模式-视图四、数据库设计过程五、E-R模型六、关系代数七、规范化理论八、函数依赖九、规范化理论-键十、规范化理论-求候选键十一、规范化理论-范式十二、规范化理论-第一范式十三、规范化理论-第…...

学习笔记 | 音视频 | 推流项目框架及细节

推流项目: 跑起来项目,再调,创造问题,注意项目跑起来包括哪些步骤 前期准备:环境的配置 依赖库要交叉编译,编译还需注意依赖的库对应的头文件(注意是绝对路径还是相对路径) Rv1126_lib、arm_libx264、arm_libx265、arm_libsrt、arm32_ffmpeg_srt、arm_openssl Ubuntu搭…...

拓扑几何学

目录 一&#xff0c;欧拉定理 1&#xff0c;平面图论图 2&#xff0c;单连通多面体 3&#xff0c;一般多面体 一&#xff0c;欧拉定理 1&#xff0c;平面图论图 在一个联通无向图中&#xff0c;点数-边数面数 1 如&#xff1a; 7-126 1 如果把最外面的五边形外面也算…...

1.12.C++项目:仿muduo库实现并发服务器之LoopThreadPool模块的设计

文章目录 一、LoopThreadPool模块二、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 三、代码 一、LoopThreadPool模块 1.线程数量可配置&#xff08;0或多个&#xff09; 2. 对所有的线程进行管理&#xff0c;其…...

SpringBoot介绍

一、什么是SpringBoot 在使用传统的Spring去做Java EE&#xff08;Java Enterprise Edition&#xff09;开发中&#xff0c;大量的 XML 文件存在于项目之中&#xff0c;导致JavaEE项目变得慢慢笨重起来&#xff0c;繁琐的配置和整合第三方框架的配置&#xff0c;导致了开发和部…...

2022最新版-李宏毅机器学习深度学习课程-P17 卷积神经网络CNN

一、CNN 用于图像分类 需要图片大小统一 彩色图像分为R G B 三层&#xff0c;展平后首尾相接 值代表着颜色的强度 图像识别中不需要全连接的&#xff0c;参数太多了 观测1&#xff1a;通过判断多个小局部图像就能判断出图片标签 感受野的定义 简化1 感受野可以重叠&#xff…...

微博清理僵尸粉

1.选择chrome或者firefox浏览器 2.登陆微博账号 3.chrome右键点检查&#xff0c;选择console firefox右键点检查&#xff0c;选择控制台 4.粘贴下面代码到console或者控制台并且回车 let removeTargetFans false; /*是否删除符合条件的粉丝&#xff0c;默认关闭*/let dee…...

创建React Native的第一个hello world工程

创建React Native的第一个hello world工程 需要安装好node、npm环境 如果之前没有安装过react-native-cli脚手架的&#xff0c;可以按照下述步骤直接安装。如果已经安装过的&#xff0c;但是在使用这个脚手架初始化工程的时候遇到下述报错的话 cli.init(root, projectname);…...

基础课3——自然语言处理的应用

自然语言处理是一种将人类语言转换为机器语言&#xff0c;以实现人机交互的技术。应用非常广泛&#xff0c;例如&#xff1a; 人机交互&#xff1a;自然语言处理技术可以应用于人机交互&#xff0c;让机器能够理解和运用人类语言&#xff0c;从而实现更加智能化的交互体验。 机…...

网络运营者应当对其收集的用户信息严格保密/专业seo关键词优化

通过加速&#xff0c;国内用户能够快速访问最流行的 Docker 镜像。 仓库 registry.docker-cn.com 包含流行的公有镜像。私有镜像仍需要从 Docker Hub 镜像库中拉取。 以下命令直接从镜像加速地址进行拉取&#xff1a; $ docker pull registry.docker-cn.com/myname/myrepo:myta…...

网站建设程序的步骤过程/百度官方客服平台

今天看到《银行主数据项目(MDM)的数据持久层,你选择hibernate还是ibatis(MyBatis)》跑到首页来了&#xff0c; 把我最近使用方式分享一下。Hiberante(Spring JDBC freemarker)两次结合&#xff0c;hibernate对简单的数据操作很方便&#xff0c;可以大量减少SQL语句的维护。对于…...

四川省网站建设/长沙网站seo推广公司

Windows Shell提供的编辑控件Edit Control(注意不是Rich Edit)没有垂直对齐的风格&#xff0c;在这样的控件中显示文本时可以观察到文本总是顶端对齐&#xff0c;虽然说可以在WM_PAINT消息中绘制文本的位置&#xff0c;可以使其垂直对齐&#xff0c;但这样到鼠标的光标也不会垂…...

国外交友网站怎么做/百度搜索排名机制

这个可以跟踪变量值的变化&#xff0c;普通的python变量不能即时地显示在屏幕上面。...

成都市网站建设公司/网络营销的盈利模式

参数传递&#xff1a;将主程序变量传递给子例程形式参数传递类型值传&#xff1a;子例程中参数变量的值的改变&#xff0c;不影响外部程序实际变量的值. DATA:A TYPE I VALUE 3,B TYPE I VALUE 6,C TYPE I. WRITE:A,A,B,B,C,C. PERFORM ADD USING A B CHANGING C. WRITE:/ SY-…...

南京网站制作报价/网络广告推广方式

深度学习编译器综合研究报告 本文主要参考了&#xff1a; The Deep Learning Compiler: A Comprehensive Survey 本文主要回答以下几个问题&#xff1a; 为什么需要dl compiler当下流行的dl framwwork有哪些深度学习硬件有三类 都有哪些dl compiler的关键组件和技术流行的dl c…...