00. 目录
文章目录
- 00. 目录
- 01. 嵌套向量中断控制器 (NVIC)
- 02. 外部中断/ 事件控制器 (EXTI)
- 03. EXTI寄存器
- 3.1 中断屏蔽寄存器 (EXTI_IMR)
- 3.2 事件屏蔽寄存器 (EXTI_EMR)
- 3.3 上升沿触发选择寄存器 (EXTI_RTSR)
- 3.5 下降沿触发选择寄存器 (EXTI_FTSR)
- 3.6 软件中断事件寄存器 (EXTI_SWIER)
- 3.7 挂起寄存器 (EXTI_PR)
- 04. EXTI寄存器映射
- 05.
- 06. 附录
- 07. 声明
01. 嵌套向量中断控制器 (NVIC) NVIC 特性
嵌套向量中断控制器 NVIC 包含以下特性:
● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 个可屏蔽中断通道,STM32F42xxx和 STM32F43xxx 具有多达 86 个可屏蔽中断通道(不包括 Cortex?-M4F 的 16 根中断线)
● 16 个可编程优先级(使用了 4 位中断优先级)
● 低延迟异常和中断处理
● 电源管理控制
● 系统控制寄存器的实现
嵌套向量中断控制器 (NVIC) 和处理器内核接口紧密配合,可以实现低延迟的中断处理和晚到中断的高效处理。
02. 外部中断/ 事件控制器 (EXTI) 外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器。每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。
EXTI 控制器的主要特性如下:
● 每个中断/事件线上都具有独立的触发和屏蔽
● 每个中断线都具有专用的状态位
● 支持多达 23 个软件事件/中断请求
● 检测脉冲宽度低于 APB2 时钟宽度的外部信号。有关此参数的详细信息,请参见STM32F4xx 数据手册的电气特性部分。
EXTI框图
文章图片
【嵌入式天地|【STM32】中断和事件】唤醒事件管理
STM32F4xx 能够处理外部或内部事件来唤醒内核 (WFE)。唤醒事件可通过以下方式产生:
● 在外设的控制寄存器使能一个中断,但不在 NVIC 中使能,同时使能 Cortex?-M4F 系统控制寄存器中的 SEVONPEND 位。当 MCU 从 WFE 恢复时,需要清除相应外设的中断挂起位和外设 NVIC 中断通道挂起位(在 NVIC 中断清除挂起寄存器中)。
● 配置一个外部或内部 EXTI 线为事件模式。当 CPU 从 WFE 恢复时,因为对应事件线的挂起位没有被置位,不必清除相应外设的中断挂起位或 NVIC 中断通道挂起位。
功能说明
要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置 2 个触发寄存器,同时在中断屏蔽寄存器的相应位写“1”使能中断请求。当外部中断线上出现选定信号沿时,便会产生中断请求,对应的挂起位也会置 1。在挂起寄存器的对应位写“1”,将清除该中断请求。
要产生事件,必须先配置好并使能事件线。根据需要的边沿检测设置 2 个触发寄存器,同时在事件屏蔽寄存器的相应位写“1”允许事件请求。当事件线上出现选定信号沿时,便会产生事件脉冲,对应的挂起位不会置 1。
通过在软件中对软件中断/事件寄存器写“1”,也可以产生中断/事件请求。
硬件中断选择
要配置 23 根线作为中断源,请执行以下步骤:
● 配置 23 根中断线的屏蔽位 (EXTI_IMR)
● 配置中断线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
● 配置对应到外部中断控制器 (EXTI) 的 NVIC 中断通道的使能和屏蔽位,使得 23 个中断线中的请求可以被正确地响应。
硬件事件选择
要配置 23 根线作为事件源,请执行以下步骤:
● 配置 23 根事件线的屏蔽位 (EXTI_EMR)
● 配置事件线的触发选择位(EXTI_RTSR 和 EXTI_FTSR)
软件中断/ 事件选择
可将这 23 根线配置为软件中断/事件线。以下为产生软件中断的步骤。
● 配置 23 根中断/事件线的屏蔽位(EXTI_IMR、EXTI_EMR)
● 在软件中断寄存器设置相应的请求位 (EXTI_SWIER)
外部中断/ 事件线映射
多达 140 个 GPIO(STM32F405xx/07xx 和 STM32F415xx/17xx)通过以下方式连接到 16 个外部中断/事件线:
文章图片
另外七根 EXTI 线连接方式如下:
● EXTI 线 16 连接到 PVD 输出
● EXTI 线 17 连接到 RTC 闹钟事件
● EXTI 线 18 连接到 USB OTG FS 唤醒事件
● EXTI 线 19 连接到以太网唤醒事件
● EXTI 线 20 连接到 USB OTG HS(在 FS 中配置)唤醒事件
● EXTI 线 21 连接到 RTC 入侵和时间戳事件
● EXTI 线 22 连接到 RTC 唤醒事件
03. EXTI寄存器 3.1 中断屏蔽寄存器 (EXTI_IMR)
Interrupt mask register
偏移地址:0x00
复位值:0x0000 0000
文章图片
3.2 事件屏蔽寄存器 (EXTI_EMR)
Event mask register
偏移地址:0x04
复位值:0x0000 0000
文章图片
3.3 上升沿触发选择寄存器 (EXTI_RTSR)
Rising trigger selection register
偏移地址:0x08
复位值:0x0000 0000
文章图片
3.5 下降沿触发选择寄存器 (EXTI_FTSR)
Falling trigger selection register
偏移地址:0x0C
复位值:0x0000 0000
文章图片
3.6 软件中断事件寄存器 (EXTI_SWIER)
Software interrupt event register
偏移地址:0x10?
复位值:0x0000 0000
文章图片
3.7 挂起寄存器 (EXTI_PR)
Pending register
偏移地址:0x14
复位值:未定义
文章图片
04. EXTI寄存器映射
文章图片
05. 06. 附录 6.1 【STM32】STM32系列教程汇总
网址:【STM32】STM32系列教程汇总
07. 声明
推荐阅读
- stm32|基于STM32和freeRTOS智能门锁设计方案
- 日常分享|共享充电宝方案原理,具体部件组成以及主控MUC参数
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- STM32|STM32的四种IO输出模式
- STM32 远程升级(ISP / IAP)
- 事件|在java项目中使用EventBus的优缺点
- stm32|stm32f103can总线过滤器配置
- STM32CubeMX配置SDIO模式(非DMA方式)
- STM32|如何建一个STM32F030标准库工程模板
- STM32 时钟RCC相关配置参考stm32f10x_rcc.h