菜鸟AI - 让提示词生成更简单! 全站导航 全站导航
AI工具安装 新手教程 进阶教程 辅助资源 AI提示词 热点资讯 技术资讯 产业资讯 内容生成 模型技术 AI信息库

已有账号?

首页 > AI教程 > STM32 GPIO中断使用教程:从入门到实战
进阶教程 GPIO中断

STM32 GPIO中断使用教程:从入门到实战

2026-06-09
阅读 0
热度 0
作者 菜鸟AI编辑部
摘要

摘要

STM32GPIO中断配置步骤:初始化引脚为输入模式,使能GPIO及SYSCFG时钟,映射中断线至对应引

STM32 GPIO 外部中断配置与实战

在STM32嵌入式项目里,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

使能复用功能时钟

GPIO外设时钟必须先行开启,否则寄存器配置无效。使能GPIOF时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);

建立IO口与中断线的映射关系

每个GPIO引脚只能映射到对应的外部中断线。PF1固定对应EXTI1,通过此函数绑定:

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管理中断响应顺序,避免优先级冲突。将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);

编写中断处理函数

当PF1上出现上升沿时,硬件自动跳入此函数。执行计数或业务逻辑后,务必清除中断标志位,否则后续触发被阻塞:

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

手动清除挂起中断

初始化后或中途需要手动清理残留中断标志,防止意外触发。调用方式与函数内一致:

EXTI_ClearITPendingBit(EXTI_Line1); //清除LINE0上的中断标志位

来源:互联网

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

同类文章推荐

相关文章推荐

更多