STM32 EXTI外部中断

简介: 外部中断 是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去.外部中断 是指由 外部设备 发出的 中断请求 ,如键盘、鼠标、计时器、网络数据等。外部中断可以提高系统的效率,使系统能够有效地处理外部设备发出的中断请求,从而改善系统的性能。

前言


一、什么是外部中断?


外部中断 是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去.


外部中断 是指由 外部设备 发出的 中断请求 ,如键盘、鼠标、计时器、网络数据等。外部中断可以提高系统的效率,使系统能够有效地处理外部设备发出的中断请求,从而改善系统的性能。


二、外部中断中断线


外部中断共有 20 条中断线。


从下图可以看出,PA0、PB0…PG0 共用的 EXTI0 中断线,PA1、PB1…PG1共用的 EXTI1 中断线,也就是 编程里面的(如下图库文件),对应 16 个中断线。


112 个引脚被分成了16个 外部中断线,不同组的同一个引脚号连接到同一个外部中断线上。

330357391d6c3516713eb724a0c8ced.png


后面三个是专用的中断线:


外部中断线 EXTI16 连接到 PVD 输出.

外部中断线 EXTI17 连接到 RTC 警告事件.

外部中断线 EXTI18 连接到 USB 唤醒事件.

外部中断线 EXTI19 连接到 ETH 唤醒事件.(只有在内部有ETH模块的设备才会有这条线)

三、STM32F103的引脚复用


GPIO 的中断是以组位一个单位的,同组间的外部中断同一时间只能使用一个。比如说,PA0,PB0,PC0,PD0,PE0,PF0,PG0这些为1组,如果我们使用PA0作为外部中断源,那么别的就不能够再使用了,在此情况下,我们只能使用类似于PB1,PC2这种末端序号不同的外部中断源。

0b85c4af7b762d164698c99463a6141.png

efc038390ec8da3bd1d686669909f57.png


以 AFIO_EXTICR1 为例 :



① AFIO_EXTICR1有32位,只有低16位可以设置值,高16位是保留位。

②它可以配置4跟外部中断线,每4位控制一根外部中断线.

③ 对于某一根外部中断线,同一时刻只能选择一组GPIO的引脚作为外部中断输入引脚.


四、相关函数:


设置外部中断的优先级:

HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority);

1

使能外部中断

HAL_NVIC_EnableIRQ(IRQn_Type IRQn);

1

外部中断服务函数

void EXTI1_IRQHandler(void);

1

回调函数

HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

1

总结

下一篇文章 介绍 OLED 的使用。


相关文章
|
6月前
|
传感器
STM32标准库外部中断和定时器知识点总结-2
STM32标准库外部中断和定时器知识点总结
|
6月前
|
传感器
STM32标准库外部中断和定时器知识点总结-1
STM32标准库外部中断和定时器知识点总结
|
6月前
|
传感器 开发者
【STM32基础 CubeMX】外部中断
【STM32基础 CubeMX】外部中断
236 44
STM32外部中断解析
STM32外部中断解析
251 0
STM32使用HAL库操作外部中断——实战操作
STM32使用HAL库操作外部中断——实战操作
239 0
STM32使用HAL库操作外部中断——理论讲解
STM32使用HAL库操作外部中断——理论讲解
234 0
STM32 使用外部中断实现按键模块化
STM32 使用外部中断实现按键模块化
133 0
STM32学习笔记(2) 使用外部中断控制按键
NVIC_IRQChannel ​​​​:对于RCT6来说,它的中断源如上图所示,在stm32f103.h中已经配置好寄存器,直接调用即可,下图中,RCT6主要用的是STM32F103X_HD的中断源
230 0
|
C语言
【嵌入式实训】STM32中断处理机制及外部中断使用方法
理论知识 STM32系列处理器外部中断/事件控制器的原理 共19个外部中断线,其中GPIO端口以下图的方式连接到16个外部中断/事件线上: 另外三种其他的外部中断/事件控制器的连接如下:EXTI 线 
622 0