工程代码:https://pan.baidu.com/s/1Qlfg1_br0tN6yy0fcDwCjg,密码:fhh2
(一)、概述
STM32外部中断通过检测外部的触发事件(上升沿触发、下降沿触发或边沿触发),触发中断事件实现低延迟的中断处理。
1、外部中断框架图
由下图可以看出,外部中断的边沿检测器连接输入信号,当“软件中断寄存器”和“中断屏蔽寄存器”打开的时候,当有事件触发时,事件会被送到NVIC中断控制器中触发中断事件。
2、外部中断特性
2.1、中断优先级
中断包含 16 个可编程优先级(使用了 4 位中断优先级),数字越小的优先级等级越高。通过NVIC_PriorityGroupConfig这个函数,把16个可编程优先级分配给抢占优先级和响应优先级
抢占优先级:可以打断其他抢占优先级低的中断,先运行完自身的中断。
响应优先级:在上一个中断运行结束后,如果另外两种中断的抢占优先级相同,则响应优先级高的中断被运行。
2.2 NVIC中断
NVIC中断是内核中断,当外部中断事件被送入内核中时,需要设置内核的NVIC的相应参数,才能进入中断服务函数。
可以参考:https://blog.csdn.net/wuyuzun/article/details/72783152
当发生中断时,程序会根据产生的中断类型,进入不同的中断服务函数执行相应的操作,各外设的中断服务函数名在启动文件中可以查找(例如:STM32F407ZGT6的IAR工程启动startup_stm32f40_41xxx.s),下图是部分中断服务函数名。
在写外设的中断功能的时候,只需要把中断功能封装成一个函数,函数名是对应的中断函数名字,当软件要执行外设的中断功能时,就会执行该函数(举例:比如外部中断0的中断函数名是"EXTI0_IRQHandler",我们只需要写一个”void EXTI0_IRQHandler(void)“的函数,当外部中断0发生时,程序会进”EXTI0_IRQHandler“这个函数执行相应的操作)。
2.3、中断的触发事件
外部中断/事件控制器包含多达 23 个用于产生事件/中断请求的边沿检测器,其中0~15号外部中断连接这每组GPIO的一个引脚,不同组GPIO的同一号引脚连接同一号外部中断(如:GPIOA_Pin2、GPIOB_Pin2都连接在外部中断2)。
3、外部中断寄存器
①EXTI_IMR寄存器使能对应的23个的外部中断
②EXTI_EMR寄存器使能对应的23个事件请求
③EXTI_RTSR触发源的选择,使能之后,当输入源有上升沿信号时,将触发对应的事件
④EXTI_FTSR触发源的选择,使能之后,当输入源有下升沿信号时,将触发对应的事件
⑤SWIER寄存器使能软件中断事件,使能时将会触发对应位置的事件
上一篇:stm32 启动过程 以及中段重定位
下一篇:STM32F407ZGT6学习之DAC
推荐阅读最新更新时间:2024-11-13 11:22
设计资源 培训 开发板 精华推荐
- AM6TW-4807SH35Z 7.2V 6瓦双输出DC/DC转换器的典型应用
- 基于STSPIN233,适用于STM32 Nucleo的低压低频无刷直流电机驱动器扩展板
- ArduinoPlugin
- 用于 LED 照明的 NCL30030 组合功率因数校正和准谐振反激控制器的典型应用
- DC1936A,LTC3882EUJ 演示板,具有 PSM 的双降压电压模式控制器,7V = VIN = 14V,0.8V = VOUT0 = 1.8V at 30A,0.8V = VOUT1 = 1.8V at 30A
- EVAL6393FB,基于 L6393 高级高压栅极驱动器的低压全桥演示板
- 【未验证】 PCIEX16分叉拆分X8X8
- TCR5SB40A、150mA、4V 输出电压 CMOS 低压降稳压器的典型应用
- LT1021CIN8-10 负串联电压基准的典型应用
- LT6656ACDC-2.048、2.048V 电压基准作为微功率稳压器的典型应用
- 有奖直播:AC/DC 在 ATX 及 Server 电源解決方案及应用 报名开始啦!
- 有奖直播:安森美汽车热管理e- Compressor 应用
- 看视频赢京东卡 | 泰享实测之水哥秘籍
- 了解设计完整AC-DC系统的快速低风险方法,轻松答题赢好礼
- 送个“车”,抽Keysight牌汽车碎片兑好礼
- 调查:泰克创新实验室全面升级,功率测试痛点通通都抛来!参与赢好礼
- 直播已结束【使用 TI 低成本 MSPM0 MCU 快速开发 – 生态详解系列之二】(9:45开始入场)
- TI低功耗蓝牙技术与阿里云IoT智能生活开放平台iLOP的完美结合!预报名+看直播均可赢好礼!
- TI有奖直播|如何进行更加快速、简单且成本更低的AI 摄像头应用的开发