STM32 配置中断常用库函数

news2024/11/20 0:29:26

单片机学习

目录

一、配置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 参数设置了设备的低功耗模式:

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

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

相关文章

html实现我的故乡,城市介绍网站(附源码)

文章目录 1. 我生活的城市北京(网站)1.1 首页1.2 关于北京1.3 北京文化1.4 加入北京1.5 北京景点1.6 北京美食1.7 联系我们 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43…

spring本地事务与单/多线程

请直接看原文 原文链接:多线程与数据库事务以及数据库连接之间的关系 - 知乎 (zhihu.com) -------------------------------------------------------------------------------------------------------------------------------- 今天我们来梳理一下, 多线程、数…

033.Python面向对象_类补充_生命周期

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

Java基准测试工具JMH的简介与使用

JMH是一套Java基准测试工具&#xff0c;用于对Java执行进行基准测试以及生成测试报告。平时应用于Java一些基础Api或者一些工具类这种离开网络因素的纯系统测试。 使用方式 maven引入&#xff1a; <dependency><groupId>org.openjdk.jmh</groupId><art…

linux账户管理实例二

要求&#xff1a;我的 用户pro1&#xff0c;pro2&#xff0c;pro3是同一个项目开发人员&#xff0c;想让这三个人用户在同一个目录下工作&#xff0c;但这三个人拥有自己的主文件夹和基本的私有用户组&#xff0c;工作目录为/srv/projecta&#xff0c;如何实现&#xff1f; 分…

03_MySQL基本SQL语句讲解

#课程目标 能够创建、删除数据表能够对表里的数据记录进行增加、删除、修改、查询操作能够创建、删除用户能够给用户授权并回收权限了解delete和truncate语句的区别 #一、数据库基本操作 ##1、查看数据库相关信息 mysql> show databases; 查看所有数据库 mysql>…

【机器学习】聚类(三):原型聚类:高斯混合聚类

文章目录 一、实验介绍1. 算法流程2. 算法解释3. 算法特点4. 应用场景5. 注意事项 二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 全局调试变量2. 调试函数3. 高斯密度函数&#xff08;phi&#xff09;4. E步&#xff08;getExpectation&#xff09…

【开源组件】- 关于Jetcache的使用

关于Jetcache的使用 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#xff0c;大家一起学习成长&#xff01; JetCache是由…

MobileNets发展与总结

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 引言MobileNetsMobileNet - V1思想代码实现 MobileNet - V2思想代码实现 MobileNet - …

LeetCode Hot100 105.从前序与中序遍历序列构造二叉树

题目&#xff1a;给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 代码&#xff1a; class Solution {private Map<Integer, Integer> indexM…

1.6 C语言之数组概述

1.6 C语言之数组概述 一、数组二、练习 一、数组 所谓数组&#xff0c;就是内存中一片连续的空间&#xff0c;可以用来存储一组同类型的数据 数组有下标&#xff0c;从0开始&#xff0c;可以理解为是给数组中的元素编号&#xff0c;便于后续寻址访问 我们来编写一个程序&…

杂货铺 | Windows系统上解压缩tgz文件

文章目录 &#x1f4da;快速终端打开实现 & 解压缩实现步骤&#x1f4da;环境变量的一般配置步骤 & 问题解决思路 &#x1f4da;快速终端打开实现 & 解压缩实现步骤 将对应的tgz文件放入对应的文件夹。快速在指定文件夹下打开终端 打开对应的路径 双击地址栏 然后…

4.28每日一题(二重积分比较大小:被积函数的大小、正负性、积分区间奇偶性)

一般比较大小的题目我们不需要把结果全部计算出来 &#xff0c;而是通过奇偶性或者被积函数的大小或大于0、等于0、小于0等方法判断比较

1、Mysql架构与历史

Mysql逻辑架构 最上层是服务并不是Mysql所独有的&#xff0c;大多数基于网络的客户端/服务器的工具或者服务都有类似的架构&#xff0c;比如连接处理&#xff0c;授权认证&#xff0c;安全等。 第二层是Mysql比较有意思的部分。大多数Mysql的核心服务都在这一层&#xff0c;…

antv/g6的学习总结

新建一个简单实例 1、使用命令行在项目目录下执行以下命令 cnpm install --save antv/g6 2、创建容器 <div id"mountNode"></div> 3、在需要用的 G6 的 JS 文件中导入 import G6 from antv/g6; 4、 数据准备 引入 G6 的数据源为 JSON 格式的对象。…

量化交易:因子风险暴露

本文介绍了如何计算因子风险暴露的内容。 判断风险暴露的建模是否合理 通常&#xff0c;此分析是基于历史数据&#xff0c;而对历史风险暴露的估计可能会影响未来的风险暴露。 因此&#xff0c;计算因子风险暴露是不够的。 必须对风险暴露保持信心&#xff0c;并明白对风险暴…

Compose入门

​ 本篇文章主要是为了对Compose有一个初步了解。知道Compose是做什么的&#xff0c;用Compose能干什么&#xff0c;在目前的各种UI框架下面有些优势&#xff0c;参考Google官网的解释加上一些自己的理解生成的一篇文章。本人也是Compose初学者&#xff0c;通过每一步学习遇到哪…

带你用uniapp从零开发一个仿小米商场_2.创建空白项目及公共样式引入

创建空白项目 打开uniapp 点击新建->项目 如下, 是编辑你项目的名字的地方是你项目存放地址,可以点击浏览器去文件管理里面选地址是模板选择,这里选择默认模板就好是一些其他选择比如uvue能让你项目在编译成软件时运行更快,unicloud能让你用js写后端,且直接就是云开发,g…

【WSA】无法打开 适用于 Android™ 的 Windows 子系统,因为它处于脱机状态。可能缺少存储设备,或者存储设备已断开连接。

问题描述 之前可以正常使用适用于 Android™ 的 Windows 子系统&#xff08;WSA&#xff09;&#xff0c;但突然间无法启动了。 当尝试启动WSA中的软件时&#xff0c;都会出现以下错误提示&#xff1a; 无法打开 适用于 Android™ 的 Windows 子系统&#xff0c;因为它处于脱…

基于springboot实现留守儿童爱心网站项目【项目源码+论文说明】计算机毕业设计

基于springboot实现留守儿童爱心网站演示 摘要 随着留守儿童爱心管理的不断发展&#xff0c;留守儿童爱心网站在现实生活中的使用和普及&#xff0c;留守儿童爱心管理成为近年内出现的一个热门话题&#xff0c;并且能够成为大众广为认可和接受的行为和选择。设计留守儿童爱心网…