STM32学习——外部中断EXTI

在学习外部中断之前,我们要先了解一下NVIC寄存器,NVIC全称嵌套向量中断寄存器,控制整个芯片的中断相关功能。但我们不需要学习NVIC所有的寄存器,弄懂ISER(set)、ICER(clear)和IP三个寄存器就行。查询固件库:

 这是我们需要用到的所有内容。

我们以EXTI0为例,首先我们要使用NVIC_InitTypeDef结构体来配置中断的通道以及抢占优先级和子优先级,配置完后对结构体进行初始化,EXTI0的有关NVIC寄存器的配置就完成了。

EXTI0~15的中断来源都是GPIO,因此我们也需要像配置按键那样来进行配置EXTI0的GPIO输入口。我们以PA0为例(按键引脚):

 配置好GPIO后,需要对EXTI进行配置。

查询STM32F103的参考手册可知,GPIO线上的中断信号是通过AFIO_EXTICR1 寄存器来传递的,使用了AFIO寄存器。查询参考手册发现,对AFIO相关寄存器进行读写时,需要打开AFIO时钟。

接下来我们只需要配置EXTI就可以了。查询固件库,找到我们所需要的用的函数。

 首先,我们需要对EXTI结构体进行配置,EXTI_Line选择你的中断来自于GPIO_x,Mode选择产生中断还是事件,Trigger选择上升沿还是下降沿,Cmd使能(对寄存器EXTI_IMR和EXTI_EMR进行配置)。结构体配置好后,进行初始化。

整个流程看参考手册的外部中断框图就行了。

 最后一步要写中断函数,注意中断函数名是库中写好的,最好不要更改。

我们所使用的EXTI0中断的函数名为EXTI0_IRQHandler() EXTI_GetITStatus(uint32_t EXTI_Line)和EXTI_ClearITPendingBit(uint32_t EXTI_Line)是对标志位的检测和清除,对应对挂起寄存器的PRx位。 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值