当前位置: 首页 > news >正文

6、中断(下)

3 EXTI

3.1 EXTI基本概念

External (Extended) interrrupt/evernt controller(EXTI),即外部(拓展)中断事件控制器。F1系列中,EXTI共有19或20条线用于检测中断。

中断与事件的概念:中断需要进入NVIC,需要CPU处理;而事件不需要进入NVIC,仅用于内部硬件自动控制。

3.2 EXTI线映射

EXTI0 ~ EXTI15:对应GPIO0到15号引脚

EXTI16:连接PVD(可编程电压检测器)输出

EXTI17:连接到RTC(实时时钟)事件

EXTI18:连接到USD唤醒事件

EXTI19:仅存在于F105/107产品,用于以太网唤醒事件

3.3 EXTI主要特性

对于F1/F4/F7系列,每条EXTI线都可以进行单独配置,选择其类型、触发方式等参数。

3.4 EXTI寄存器

寄存器名称

位宽

功能

备注

中断屏蔽寄存器IMR

32,仅0~19可用

0为屏蔽对应线的中断请求,1为使能对应线的中断请求

事件屏蔽寄存器EMR

32,仅0~19可用

0为屏蔽对应线事件产生,1为使能对应线的事件产生

该寄存器不常用

上升沿触发选择寄存器RTSR

32,仅0~19可用

0为屏蔽对应线的上升沿触发,1为使能对应线的上升沿触发

下降沿触发选择寄存器FTSR

32,仅0~19可用

0为屏蔽对应线的下降沿触发,1为使能对应线的下降沿触发

软件中断事件寄存器SWIER

32,仅0~19可用

0表示无效果,写1后会立即产生一个与硬件触发等效的中断/事件请求

用于代码调试

挂起寄存器PR

32,仅0~19可用

当中断被使能时,对应的PR寄存器位会被写入1

在中断服务函数执行完成后必须清除对应PR位

4 AFIO

4.1 AFIO简介

Alternate Function I/O(AFIO),即复用功能输入/输出模块,负责管理具有多个功能或搭载了多个外设的引脚。

4.2 AFIO功能

1、外设引脚重映射:将某个外设的默认引脚重映射到其他引脚上,以解决不同外设争用同一引脚的冲突

2、外部中断引脚配置:将选择的GPIO引脚连接到EXTI中断线上

3、事件输出控制:将内部的事件信号引到指定的GPIO引脚上用于触发或同步外部的设备

4.3 AFIO寄存器

寄存器名称

位宽

功能

备注

事件控制寄存器EVCR

32,仅0~7位有效

位0~3选择事件输出的GPIO引脚;位4~6选择事件输出的GPIO端口;位7写1使能事件输出功能,写0则为禁止

HAL库中无直接对应的宏,需要直接操作寄存器

复用重映射和调试I/O配置寄存器MAPR

32

位24~26用于调试接口(JTAG/SWD)配置,其他位用于外设引脚重映射

位24~26可选值及详细功能见下表

外部中断配置寄存器EXTICR1~EXTICR4

4×32

4个寄存器分别控制EXTI0~15,负责将具体的GPIO引脚连接到对应的EXTI线上

通常不需要操作

调试端口映像

位24~26

调试端口状态

SWJ I/O引脚状态

PA13

PA14

PA15

PB3

PB4

000

完全SWJ(JTAG-DP和SW-DP)

不可用

不可用

不可用

不可用

不可用

001

完全SWJ,但没有JNTRST

不可用

不可用

不可用

不可用

可用

010

关闭JTAG-DP,开启SW-DP

不可用

不可用

可用

可用

可用

100

关闭JTAG-DP和SW-DP

可用

可用

可用

可用

可用

备注

不建议使用关闭JTAG-DP和SW-DP(100),会使芯片无法再通过调试器连接

5 中断的使用

5.1中断配置步骤

  1. 使能GPIO时钟
  2. 设置GPIO参数
  3. 使能AFIO时钟
  4. 设置EXTI与IO的关系
  5. 设置EXTI屏蔽和上下沿触发
  6. 设置NVIC:设置优先级分组、优先级和使能中断

HAL_GPIO_Init()可同时初始化GPIO、AFIO和EXTI,只需单独初始化NVIC即可。

5.2 中断服务函数

在HAL库中,中断处理分为入口函数、通用处理函数和回调函数三步。

1、入口中断函数:该函数功能为调用HAL库提供的通用处理函数,其函数形式为:

void EXTIx_IRQHandler(void)

在STM32中,x仅有0、1、2、3、4、9_5、15_10七个。

  1. 通用处理函数:在入口中断函数中被调用,其功能有3个:
  2. 检查有效性:检测该EXTI中断线是否被使能以及是否有挂起标志
  3. 清除中断标志:向PR寄存器写1清除中断标志
  4. 调用用户回调:调用下一步的回调函数

3、用户回调函数:该函数在HAL库中被弱定义,允许被用户重写。该函数执行时间必须极短,否则会阻塞其他中断或主循环。函数形式为:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)

其中GPIO_Pin用以区分触发中断的引脚编号

http://www.jsqmd.com/news/1391112/

相关文章:

  • 为什么选择专业番禺网站建设?揭秘本地企业品牌升级的底层逻辑与实战指南
  • HTTrack离线下载工具完整实战:从首次抓取到自动更新
  • MySQL数据库安装全攻略:从选型到配置的避坑指南
  • Maps SDK for Unity性能优化指南:解决大型地形数据加载难题
  • 换台电脑脚本就全废?KeymouseGo 怎么把“录制“变成一套可移植的事件流水线
  • CRC-8 SMBUS算法原理与C语言实现:从基础到嵌入式应用
  • 一招搞定 RPG Maker 加密素材:RPG-Maker-MV-Decrypter 图片与音频解密完整教程
  • Spring AI 从概念到实践:统一抽象、RAG与Agent开发指南
  • C# .NET 条形码生成原理与实现:从 Code 39 到 Code 128
  • Legacy-iOS-Kit完整实战指南:iOS老设备降级、SHSH备份与越狱一步到位
  • 企业智能体建设方案怎么做?从业务场景梳理到Agent平台落地的完整实施路线
  • MySQL幻读问题深度解析:从间隙锁原理到库存扣减实战
  • 旧Mac告别吃灰:OpenCore Legacy Patcher免费焕新全攻略,小白也能让老设备跑上最新系统
  • 2026年7月央国企求职辅导 上岸率梳理 - 互联网科技品牌测评
  • 微信聊天记录导出备份终极指南:6步搞定数据留痕与年度报告
  • 微信聊天记录本地导出:用WeChatMsg给对话上一道保险
  • 从点击到响应:深入解析HTTP协议核心原理与实战排错指南
  • Shell与Bash深度解析:从命令行基础到自动化脚本实战
  • Topit:终极免费的macOS窗口置顶工具,一键把任何窗口钉在屏幕最前
  • OpCore-Simplify上手实录:30分钟生成一套可用的黑苹果OpenCore EFI
  • 5分钟把Android Studio界面变成中文:官方修改版中文语言包实战全记录
  • Steam Deck模拟器性能调优:平衡画质与续航的5个专业技巧
  • 技术团队高效协作与创新:从“最差程序员”到“系统优化者”的启示
  • 3分钟上手DTLN:从安装到运行的完整指南(附预训练模型下载)
  • 壹视短视频系统升级解读:从短视频社交APP源码到全链路商业生态平台的能力进化 - 壹软科技
  • 华为Taishan服务器安装统信UOS 20实战指南:从分区到调优
  • 喷雾造粒机哪个品牌好?深度评测后推荐上海雅程 - 品牌推荐大师
  • WaveTools鸣潮工具箱完整指南:120帧解锁、画质调优与抽卡分析一次讲透
  • 绕过TPM 2.0限制:在老旧电脑上安装Windows 11的完整实战指南
  • OpCore-Simplify:黑苹果 EFI 一键配置,把三天的苦活压到一杯咖啡的时间