游乐游手机版
首页/AI教程/文章详情

STM32 GPIO外部中断使用方法

时间:2026-06-09 15:21
STM32GPIO中断配置步骤:初始化引脚为输入模式,使能GPIO及SYSCFG时钟,映射中断线至对应引脚,设置EXTI触发边沿(上升沿 下降沿 双边沿),使能EXTI中断线,配置NVIC优先级分组及中断优先级,编写中断服务函数并清除EXTI标志位,实现外部信号触发响应。

GPIO 中断的使用

在嵌入式开发实战中,GPIO中断是最基础且应用最广泛的功能之一——按键检测、外部触发信号采集、传感器中断输出等场景都离不开它。配置流程虽然不算复杂,但每个环节都需要精确操作。下面我们拆解完整的配置步骤,配合代码示例一步步深入理解。

初始化 GPIO引脚作为输入引脚 GPIO_Init()

第一步,将引脚配置为输入模式,并设定内部上下拉电阻。这里以PF1为例,配置为下拉输入,代码如下:

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PF1设置成输入,默认下拉
GPIO_Init(GPIOF, &GPIO_InitStructure);          //初始化GPIOF.1

使能复用功能时钟

务必记得使能对应的外设时钟,否则初始化操作将无效。这里使能GPIOF时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);

设置IO口与中断线的映射关系

每个GPIO引脚必须与特定外部中断线建立一一对应关系。PF1对应外部中断线1,使用以下函数完成绑定:

GPIO_EXTILineConfig(GPIO_PortSourceGPIOF, GPIO_PinSource1);

初始化线上中断,设置触发条件

接下来配置EXTI外设——指定中断线编号、触发方式(上升沿、下降沿或双边沿)。本示例选择上升沿触发:

EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line1;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);

配置中断分组(NVIC)

NVIC负责管理中断优先级。这里将EXTI1中断的抢占优先级设为2,子优先级设为3:

NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

中断处理函数

当引脚上检测到上升沿时,硬件会自动跳转到该中断服务函数。在函数内可执行计数或其他业务逻辑,完成后必须清除中断标志位,否则无法响应下一次中断:

void EXTI1_IRQHandler(void)
{
    count  ;
    EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE0上的中断标志位
}

手动清除中断

除了在中断处理函数内部清除标志,有时也需要在外部手动清除,比如初始化后先清理一次,避免残留的悬挂中断影响后续触发。方法完全相同:

EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE0上的中断标志位
来源:https://developer.aliyun.com/article/704605
上一篇剪映小助手音频添加接口使用教程 下一篇Qwen3.6-35B极速本地部署指南:6G显存畅玩,支持全平台
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Windows Docker Desktop RabbitMQ生产级部署完整指南
AI教程 · 2026-06-29

Windows Docker Desktop RabbitMQ生产级部署完整指南

前言 在 Windows 本地开发环境中,直接安装 RabbitMQ 确实颇为周折:需要单独配置 Erlang 运行环境、手动管理环境变量、服务启停全凭手工操作。更令人困扰的是,版本兼容冲突、端口占用、环境不一致等问题层出不穷。笔者见过不少开发者为搭建环境就得耗费整整半天时间。 相比之下,借助 Do

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践
AI教程 · 2026-06-29

AI搜索重构制造业采购逻辑的阿里云企业级GEOCMS优化实践

先分享一个切实感受。过去两年,我们与福建制造企业合作较为频繁,发现一个非常突出的现象:超过80%的企业官网,产品参数仍然存放在PDF或图片中。AI爬虫?根本无法抓取。这些企业技术实力不弱、资质证照齐全、应用案例也丰富,但在AI搜索这一全新战场上,它们几乎处于隐身状态。 一、一个正在发生的行业变化 A

阿里云Token Plan团队版功能价格与省钱购买指南
AI教程 · 2026-06-29

阿里云Token Plan团队版功能价格与省钱购买指南

阿里云百炼近期推出了名为“Token Plan 团队版”的全新服务,这一服务专为企业与开发者量身打造,定位为AI大模型订阅平台。通过引入Credits作为统一计量单位,将文本生成、图像生成等多模态AI能力纳入单一计费体系,同时无缝兼容主流AI编程工具及智能体(Agent)生态系统。其核心亮点包括:全

阿里云物联网.NET Core客户端位置信息上报
AI教程 · 2026-06-29

阿里云物联网.NET Core客户端位置信息上报

阿里云物联网平台的位置服务并非一个完全独立的功能模块。位置信息可包含二维坐标与三维坐标,而位置数据的来源本质上是借助设备属性进行上传。换言之,若要让设备上报位置,您需先将其视为一个普通属性进行处理。 1)添加二维位置数据 操作过程十分简洁。进入数据分析 → 空间数据可视化 → 二维数据,点击添加,将

年阿里云服务器选型配置与网站部署全攻略
AI教程 · 2026-06-29

年阿里云服务器选型配置与网站部署全攻略

2026年,阿里云服务器生态已高度成熟,形成了清晰的轻量应用服务器与ECS云服务器两大产品阵营。无论你是计划搭建个人博客、企业官网,还是运营电商平台、进行应用开发,基本都能找到理想的解决方案。本指南将从服务器选型、配置选择、部署流程到安全运维,系统梳理2026年最实用的操作要点,帮助你少走弯路,让网