STM32的EXTI(外部中断/事件控制器、External Interrupt/Event Controller)模块是一个功能强大的外设,用于处理外部中断和事件。它允许微控制器在外部信号发生变化时触发中断或事件,从而实现对外部事件的快速响应。本文是对STM32单片机的 EXTI模块的详细介绍,希望能为读者提供帮助。
1. EXTI模块
EXTI模块允许STM32的GPIO引脚配置为外部中断源。当外部信号发生变化时,EXTI可以触发中断,使CPU暂停当前任务,转而处理中断事件。
AFIO(备用功能输入输出、Alternate Function I/O)
AFIO是STM32微控制器中的一个特殊功能模块,它主要用于配置GPIO引脚的备用功能,实现引脚的复用和重映射。此处AFIO负责将GPIO引脚映射到外部中断线(EXTI),使得所有GPIO引脚都能作为外部中断的输入源。但需注意,引脚的端口(Port)可以不同但引脚号(Pin Number)不能相同(例如PA1和PB1不能同时做为输入源)。
中断触发方式
每个EXTI线可以独立配置为上升沿触发、下降沿触发、双边沿触发或软件触发。
触发方式 | 效果 |
---|---|
上升沿触发 | 只有在信号从低到高变化时,才会触发中断。 信号保持高电平或低电平时,不会触发任何操作。 |
下降沿触发 | 只有在信号从高到低变化时,才会触发中断。 信号保持高电平或低电平时,不会触发任何操作。 |
双边沿触发 | 无论信号是上升还是下降,都会触发中断。 信号保持高电平或低电平时,不会触发任何操作。 |
软件触发 | 通过设置EXTI的软件中断寄存器(EXTI_SWIER )来模拟硬件信号触发的中断 |
由前三种触发方式可知,EXTI仅检测信号的变化状态,不检测信号的初始状态或保持状态。但由于大部分元件都遵循常态上拉,触发下拉的原则。因此GPIO接口建议设为上拉输入、或是浮空输入。
通道数
STM32支持最多16个GPIO中断线(EXTI0到EXTI15),外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒。
NVIC优先级分组
NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,形成五组分组方式,分为高n位的抢占优先级和低4-n位的响应优先级。**数值越小,优先级越高。**抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。
- 中断号(Interrupt N