STM32学习之EXIT外部中断+红外传感器计数(江科大5-2集)

本文详细描述了如何在STM32中配置GPIO、AFIO、EXTI和NVIC以实现外部中断功能,包括RCC时钟设置、GPIO输入模式、AFIO中断线配置、EXTI触发方式和中断响应,以及NVIC中断优先级分配和中断服务程序的执行过程。
摘要由CSDN通过智能技术生成

在这里插入图片描述
只需要把这个外部中断从GPIO到NVIC这一路中出现的外设模块配置好
具体步骤:
1、配置RCC,把涉及的外设时钟都打开
2、配置GPIO,选择端口为输入模式
3、配置AFIO
4、配置EXTI,选择边沿触发方式(比如上升沿、下降沿或者双边沿0,选择触发响应的方式(中断响应或事件响应)
5、配置NVIC,给中断一个合适的优先级,通过NVIC,外部中断信号就能进入CPU了,CPU接收到中断信号,才能跳转到中断函数里执行中断程序

一、RCC开启时钟

从这三个函数中选择对应的函数开启外设时钟:RCC_APB2PeriphClockCmd()或者RCC_APB1PeriphClockCmd()或者RCC_AHBPeriphClockCmd(),由于GPIO和AFIO是APB2总线上的外设,所以:
在这里插入图片描述
EXTI和NVIC(内核的外设,RCC管的是内核外的外设)这俩个外设的时钟是一直都打开的,不需要我们再开启时钟了

二、配置GPIO

1.定义GPIO_InitTypeDef结构体
2.给结构体成员赋值
3.用GPIO_Init()函数初始化GPIO外设
在这里插入图片描述

三、配置AFIO

用GPIO_EXITLineConfig()函数 配置AFIO外部中断引脚选择
代表连接PB14号口的第14个中断线路,当执行完这个函数后,AFIO的第14个数据选择器就拨好了,其中输入端被拨到了GPIOB外设上,对应的就是PB14号引脚,输出端固定连接的是EXTI的低14个中断线路

四、配置EXTI

先了解EXTI的库函数:
EXTI_Init() 配置EXTI外设
EXTI_DeInit() 清除EXTI的配置,恢复成上电默认状态
EXTI_StructInit() 把参数传递的结构体变量赋一个默认值

EXTI_GenerateSWInterrupt() 软件触发外部中断,调用这个函数,参数给一个指定的中断线,就能软件触发一次这个外部中断

在主程序中查看或清除标志位:
EXTI_GetFlagStatus() 可以获取指定的标志位是否被置1
EXTI_ClearFlag() 对置1的标志位进行清除
在中断函数中查看或清除标志位:
EXTI_GetITStatus() 可以获取指定的标志位是否被置1
EXTI_ClearITPendingBit() 对置1的标志位进行清除
本质上,这四个函数都是对状态寄存器的读写

1.定义EXTI_InitTypeDef结构体
2.给结构体成员赋值
3.用EXTI_Init()函数初始化EXTI外设
在这里插入图片描述

五、配置NVIC

NVIC_PriorityGroupConfig() 用来中断分组的

1.中断分组
2.定义EXTI_InitTypeDef结构体
3.给结构体成员赋值
4.用EXTI_Init()函数初始化EXTI外设
在这里插入图片描述
在STM32中,每个中断函数的名字都是固定的,每个中断通道对应一个中断函数,中断函数不需要调用,它是自动执行的

六、定义中断函数

在这里插入图片描述
完整程序:
链接:https://pan.baidu.com/s/1FJXSysMpxgpV1st4JlMm7Q?pwd=wzyv
提取码:wzyv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值