嵌入式接口之EXTI与NVIC的STM32模板库函数的一些解释_exti_linecmd

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

	- [NVIC\_PriorityGroupConfig](#NVIC_PriorityGroupConfig_86)
	- [NVIC\_IRQChannelCmd](#NVIC_IRQChannelCmd_89)
+ [完成NVIC中外部中断EXTI4片外中断的初始化](#NVICEXTI4_92)

前言

嵌入式其实还有中断实验和AD转换实验需要复习,但是老师PPT里说他的实验代码除了教学不可用于其他用途,再加上可能也没时间写完整的实验的博客了,那就简单讲讲函数库,能够让一些代码变得看起来顺眼一点。

STM32的中断

计算机离不开中断,STM32中断功能主要由NVIC(嵌套向量中断控制器)完成。其中中断分为硬中断和软中断。

硬请求信号来自ARM核CM3的外面,来自MCU片上各种接口和MCU片外扩展的外设接口,产生时刻与CM3的工作时钟异步,在CM3中它们被称为“中断”

软中断是因ARM核CM3的活动而产生的,即在执行指令或访问存储器时产生的,因此对CM3来说是与工作时钟同步的,在CM3中它们被称为“异常”

在STM32中,把所有能打断正常执行流的事件都称为异常,不严格区别到底是外部中断还是内部异常。

下面是STM32关于中断硬件设备的结构层次图。
在这里插入图片描述
下面讲解一些模板库中的函数的一些参数

EXTI

STM32中有一个片外中断接口EXTI用来代理19路中断源向NVIC的中断请求(芯片外设备中断需要经EXTI和NVIC二级管理,即芯片外设备须通过某个外中断请求引脚EXTIi(i=0~15)向EXTI请求中断,EXTI再向NVIC请求中断)

EXTI_InitTypeDef

定义了EXTI的结构体,其中包含了4个参数,分别用于设置外部线路、被使能的模式、触发边沿和线路状态
在这里插入图片描述

EXTI_Line

EXTI_Line 用于设置外部线路,取值如下:
在这里插入图片描述
0-15是对GPIO口的每个引脚的中断设置,16、17、18分别对应PVD、RTC、USB。

EXTI_Mode

EXTI_Mode用于设置被使能线路的模式,取值如下:
在这里插入图片描述

EXTI_Trigger

EXTI_Trigger设置了被使能线路的触发边沿,取值如下:
在这里插入图片描述
下降沿就是从高电平向低电平跳变,上升沿就是从低电平向高电平的跳变。

EXTI_LineCmd

EXTI_LineCmd 用来定义选中线路的新状态。它可以被设为 ENABLE 或者 DISABLE。

EXTI_Init

用于初始化设置好的EXTI_InitTypeDef的结构体。
在这里插入图片描述

EXTI_ClearITPendingBit

用于清除中断挂起位。
在这里插入图片描述

GPIO_EXTILineConfig

这个函数将GPIO管脚连接到指端外设线,使得GPIO能够引发中断
在这里插入图片描述

初始化一个GPIO的EXTI

//PE8转接EXTI8片外中断请求线
GPIO\_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource4);
//定义一个EXTI结构体
EXTI_InitTypeDef EXTI_InitStructure;
//使用外部中断线4
EXTI_InitStructure.EXTI_Line = EXTI_Line4;
//中断请求
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
//下降沿
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
//使能线路
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
//初始化对应中断外设
EXTI\_Init(&EXTI_InitStructure);

这样我们就能够初始化一个用PE4中断使能外部线4,并且获得下降沿时才响应的中断。

NVIC

EXTI主要负责请求中断,STM32中断功能主要由NVIC(嵌套向量中断控制器)完成,因此我们还需要配置NVIC才能完成整个中断的过程。

NVIC_Init

用于初始化NVIC寄存器。
在这里插入图片描述

NVIC_InitTypeDef

用于定义NVIC的初始化结构体。

NVIC_IRQChannel

该参数用以使能或者失能指定的 IRQ 通道。

在这里插入图片描述
在这里插入图片描述
EXTI的请求使用外部中断线0-4响应即可。

NVIC_IRQChannelPreemptionPriority

该参数设置了成员 NVIC_IRQChannel 中的先占优先级

NVIC_IRQChannelSubPriority

该参数设置了成员 NVIC_IRQChannel 中的从优先级

NVIC_PriorityGroupConfig

能够设置优先级分组。
在这里插入图片描述

NVIC_IRQChannelCmd

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值