——

整理自STM32F4XX参考手册和STM32F4开发指南(正点原子)以及网络。
因为这两本手册已讲解的足够清晰,所以这里只把他们进行结合并做了些许补充。

功能说明

外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可
单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或
边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。
STM32F4 的 23 个外部中断为:
线 0~15:对应外部 IO 口的输入中断。
线 16:连接到 PVD 输出。
线 17:连接到 RTC 闹钟事件。
线 18:连接到 USB OTG FS 唤醒事件。
线 19:连接到以太网唤醒事件。
线 20:连接到 USB OTG HS 唤醒事件。
线 21:连接到 RTC 入侵和时间戳事件。
线 22:连接到 RTC 唤醒事件。

外部中断/事件线映射

多达 140 个 GPIO(STM32F405xx/07xx 和 STM32F415xx/17xx)通过以下方式连接到 16 个
外部中断/事件线:

下图摘自STM32F4XX参考手册。

STM32 外部中断理论学习笔记
SYSCFG 外部中断配置寄存器( SYSCFG external interrupt configuration register )用来选择 EXTIx 外部中断的源输入,为此必须开启SYSCFG时钟。
GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G,H,I)分别对应中断线 0~15,这样每个中断线对应了最多 9 个 GPIO 。以线 0 为例:它对应了 GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0,GPIOH.0,GPIOI.0。而中断线每次只能连接到 1 个GPIO上,这样就需要通过配置来决定对应的中断线配置到哪个 GPIO 上了。

配置步骤

1)使能 IO 口时钟,初始化 IO 口为输入。
2)使能 SYSCFG 时钟,设置 IO 口与中断线的映射关系。
3)初始化线上中断,设置触发条件等。
4)配置中断分组(NVIC),并使能中断。
5)编写中断服务函数。

中断和事件的区别

事件是中断的触发源:开放了对应的中断屏蔽位,则事件可以触发相应的中断。
事件也可以是其它一些操作的触发源。
事件本质上就是一个触发信号,是用来触发特定的外设模块或核心本身(唤醒)。

相关文章: