STM32 配置中断常用库函数
单片机学习
目录
一、配置AFIO相关库函数
1.1函数GPIO_AFIODeInit
1.2函数GPIO_EventOutputConfig
1.3函数GPIO_EventOutputCmd
1.4函数GPIO_EXTILineConfig
二、配置EXTI相关库函数
2.1函数EXTI_DeInit
2.2函数EXTI_Init
2.3函数EXTI_StructInit
2.4函数 EXTI_GenerateSWInterrupt
2.5 对状态寄存器读写的EXIT库函数
2.5.1在主函数里,查看和清除标志位的函数
1.函数 EXTI_GetFlagStatus
2.函数 EXTI_ClearFlag
2.5.2在中断函数里,查看和清除标志位的函数
1.函数 EXTI_GetITStatus
2.函数 EXTI_ClearITPendingBit
三、配置NVIC相关库函数
3.1函数 NVIC_PriorityGroupConfig
3.2函数NVIC_Init
3.3函数NVIC_SetVectorTable
3.4函数NVIC_SystemLPConfig
一、配置AFIO相关库函数
1.1函数GPIO_AFIODeInit
复位AFIO外设,调用函数,AFIO外设配置会全部清除。
1.2函数GPIO_EventOutputConfig
配置AFIO的事件输出功能。
GPIO_PortSource 用以选择用作事件输出的 GPIO 端口。下表给出了该参数可取的值。
1.3函数GPIO_EventOutputCmd
配置AFIO的事件输出功能。
1.4函数GPIO_EXTILineConfig
配置中断,调用这个函数可以配置AFIO的数据选择器,来选择需要的中断引脚。
代码示例:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource14);//配置AFIO外部中断引脚选择
二、配置EXTI相关库函数
2.1函数EXTI_DeInit
调用这个函数就可以把EXTI的配置都清除,恢复成上电默认的状态
2.2函数EXTI_Init
调用这个函数就可以根据这个结构体里的参数配置EXIT外设,初始化EXTI主要用这个函数,使用方法和GPIO_Init一样。
EXTI_Line 选择了待使能或者失能的外部线路。下表给出了该参数可取的值。
EXTI_Mode 设置了被使能线路的模式。下表给出了该参数可取的值。
EXTI_Trigger 设置了被使能线路的触发边沿。下表给出了该参数可取的值。
代码示例:
EXTI_InitTypeDef EXIT_InitSrtucture;EXIT_InitSrtucture.EXTI_Line=EXTI_Line14;EXIT_InitSrtucture.EXTI_LineCmd=ENABLE;EXIT_InitSrtucture.EXTI_Mode=EXTI_Mode_Interrupt;EXIT_InitSrtucture.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_Init(&EXIT_InitSrtucture);
2.3函数EXTI_StructInit
调用这个函数就可以把参数传递的结构体变量赋一个默认值。
下表为EXTI_InitStruct 各个成员的缺省值。
2.4函数 EXTI_GenerateSWInterrupt
这个函数是用来软件触发外部中断的,调用这个函数,参数给一个指定的中断线,就能软件触发一次这个外部中断。
2.5 对状态寄存器读写的EXIT库函数
下面四个函数用来程序操作标志位,都是对状态寄存器的读写。
2.5.1在主函数里,查看和清除标志位的函数
1.函数 EXTI_GetFlagStatus
这个函数是用来获取指定标志位是否被置1的。
2.函数 EXTI_ClearFlag
这个函数是用来对置1的标志位进行清除的。
2.5.2在中断函数里,查看和清除标志位的函数
1.函数 EXTI_GetITStatus
这个函数是用来获取中断标志位是否被置1的。
2.函数 EXTI_ClearITPendingBit
这个函数是用来清除中断挂起标志位的。
代码示例:
void EXTI15_10_IRQHandler (void)
{if(EXTI_GetITStatus(EXTI_Line14) == SET)//判断所选定的中断标志位是不是为1.{//中断执行程序EXTI_ClearITPendingBit(EXTI_Line14);//清除中断标志位函数}
}
三、配置NVIC相关库函数
下表例举了 NVIC 所有寄存器。
3.1函数 NVIC_PriorityGroupConfig
这个函数是用来中断分组,参数是中断分组的方式。
NVIC_PriorityGroup 该参数设置优先级分组位长度。
代码示例:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
3.2函数NVIC_Init
这个函数是根据结构体里指定的参数初始化NVIC。
NVIC_IRQChannel 该参数用以使能或者失能指定的 IRQ 通道。下表给出了该参数可取的值。
NVIC_IRQChannelPreemptionPriority 参数设置了成员 NVIC_IRQChannel 中的先占优先级。
NVIC_IRQChannelSubPriority 参数设置了成员 NVIC_IRQChannel 中的从优先级。
下表给出了由函数NVIC_PriorityGroupConfig 设置的先占优先级和从优先级可取的值。
代码示例:
NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStructure);
3.3函数NVIC_SetVectorTable
这个函数是设置中断向量表的。
NVIC_VectTab 参数设置向量表基地址:
3.4函数NVIC_SystemLPConfig
这个函数的作用是系统低功耗配置。
LowPowerMode 参数设置了设备的低功耗模式:
相关文章:

STM32 配置中断常用库函数
单片机学习 目录 一、配置AFIO相关库函数 1.1函数GPIO_AFIODeInit 1.2函数GPIO_EventOutputConfig 1.3函数GPIO_EventOutputCmd 1.4函数GPIO_EXTILineConfig 二、配置EXTI相关库函数 2.1函数EXTI_DeInit 2.2函数EXTI_Init 2.3函数EXTI_StructInit 2.4函数 EXTI_Gener…...

性能测试常见的指标详解
一、什么是性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能是否达到预估的性能需求…...

【键盘变成了快捷键,怎么办?】
**最便捷的操作:**拔掉键盘有线插头,将键盘驱动进行卸载,重新插上键盘即可 键盘驱动如何卸载: 以win10为例,点击开始菜单栏选择设置 选择左上角系统 选择系统中,点击最下方关于,点击右侧的设备管理器 选…...

LeetCode Hot100 105.从前序与中序遍历序列构造二叉树
题目:给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 代码: class Solution {private Map<Integer, Integer> indexM…...
今天先水一章
水贴,可自动忽略...

网页设计作业-音乐网站首页
效果图 网盘链接 链接:https://pan.baidu.com/s/1CO4jAOY0zk1AWTx_pC3UmA?pwdfuck 提取码:fuck...

【2023 云栖】阿里云刘一鸣:Data+AI 时代大数据平台建设的思考与发布
云布道师 本文根据 2023 云栖大会演讲实录整理而成,演讲信息如下: 演讲人:刘一鸣 | 阿里云自研大数据产品负责人 演讲主题:DataAI 时代大数据平台应该如何建设 今天分享的主题是 DataAI 时代大数据平台应该如何建设࿰…...

【DP】mobiusp正在创作乐曲
输入样例1: 5 2 1 7 7 1 3 输出样例1: 2 输入样例2: 10 3 2 5 6 4 4 5 7 3 5 6 输出样例2: 1 #include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; typede…...

docker国内镜像加速
创建或修改 /etc/docker/daemon.json 文件,修改为如下形式 {"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"] } Docker中国区官方镜像htt…...
Calling PeopleTools APIs 调用PeopleTools API
Calling PeopleTools APIs 调用PeopleTools API You can call all of the PeopleTools APIs from an Application Engine program. When using APIs, remember that: 您可以从应用程序引擎程序调用所有PeopleTools API。使用API时,请记住: All the PeopleTools …...

强化学习,快速入门与基于python实现一个简单例子(可直接运行)
文章目录 一、什么是“强化学习”二、强化学习包括的组成部分二、Q-Learning算法三、迷宫-强化学习-Q-Learning算法的实现全部代码(复制可用)可用状态空间检查是否超出边界epsilon 的含义更新方程 总结 一、什么是“强化学习” 本文要记录的大概内容&am…...

【手写实现一个简单版的Dubbo,深刻理解RPC框架的底层实现原理】
手写实现一个简单版的Dubbo,深刻理解RPC框架的底层实现原理 RPC框架简介了解Dubbo的实现原理服务暴露服务引入服务调用 手写实现一个简单版的Dubbo服务暴露ServiceBeanProxyFactory#getInvokerProtocol#exportRegistryProtocol#export 服务引入RegistryProto#referD…...

计数问题+约瑟夫问题(map)
目录 一、计数问题 二、约瑟夫问题 一、计数问题 #include<iostream> #include<map> using namespace std; int main() {int n,x;cin>>n>>x;map<int,int>m;for(int i1;i<n;i){if(i>1 && i<10){m[i];}else{int temp i;while (…...
Maven聚合项目发布至私服指定模块
无论是从事框架开发工作还是公共服务模块开发,为了解决通用性问题,常常需要发布一些依赖组件至maven私服。然而通常我们得maven工程都是由多个模块组成得聚合工程(一个父工程下有多个模块)。 这个时候可能会面临两个窘境…...

SpringCloud 微服务全栈体系(十六)
第十一章 分布式搜索引擎 elasticsearch 六、DSL 查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1. DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL(Domain Specific Language)来定义查询。常见的查询类型包括࿱…...

「快学Docker」监控和日志记录容器的健康和性能
「快学Docker」监控和日志记录容器的健康和性能 1. 容器健康状态监控2. 性能监控3. 日志记录几种采集架构图 4. 监控工具和平台cAdvisor(Container Advisor)PrometheusGrafana 5. 自动化运维 1. 容器健康状态监控 方法1:需要实时监测容器的运…...

midjourney过时了?如何使用基于LCM的绘图技术画出你心中的画卷。
生成 AI 艺术在近年来迅速发展,吸引了数百万用户。然而,传统的生成 AI 艺术需要等待几秒钟或几分钟才能生成,这对于快节奏的现代社会来说并不理想。 近日,中国清华大学和 AI 代码共享平台 HuggingFace 联合开发了一项新的机器学习…...
【代码随想录】算法训练计划28
回溯 1、子集 题目: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 输入:nums [1,2,3] 输出:[[],[1],[2…...
量化交易:筹码理论的探索-筹码分布计算的实现
前言 很多朋友习惯了同花顺、大智慧等看盘软件,经常问到筹码分布如何计算。 说起来筹码分布的理论在庄股时代堪称是一个划时代产品,虽然历经level2数据、资金流统计、拆单算法与反拆单算法等新型技术的变革,庄股时代也逐渐淡出市场…...
常用Redis的键命令参考
一、DEL DEL key [key …] 删除给定的一个或多个 key 。 不存在的 key 会被忽略。 #删除单个键127.0.0.1:6379> set name zhangsan OK 127.0.0.1:6379> del name (integer) 1# 删除一个不存在的 key, 失败,没有 key 被删除127.0.0.1:6379> E…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...