0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm32 GPIO中断配置教程

STM32 GPIO中断配置教程简述如下: 开启GPIO和AFIO时钟。 配置GPIO为输入模式。 使用AFIO将GPIO连接到EXTI。 配置EXTI,选择触发方式和响应模式。 配置NVIC,设置中断优先级。 确保每个步骤正确无误,以实现GPIO中断功能。

分享:

以下是一份 STM32 GPIO 中断配置的中文教程,基于标准库(Standard Peripheral Library)和HAL库两种常见开发方式:


一、GPIO中断基本概念

GPIO中断用于在外部电平变化时触发CPU中断,常见应用场景:按键检测、外部信号触发等。配置关键点:

  1. GPIO引脚模式:设置为输入模式(浮空/上拉/下拉)
  2. 中断触发方式:上升沿、下降沿、双边沿触发
  3. 中断优先级:通过NVIC配置优先级
  4. 中断服务函数:处理中断事件

二、配置步骤(标准库)

1. 使能GPIO和复用时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);

2. 配置GPIO为输入模式

GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;        // 例如PA0引脚
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;    // 上拉输入
GPIO_Init(GPIOA, &GPIO_InitStruct);

3. 配置EXTI中断线

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); // PA0映射到EXTI0

EXTI_InitTypeDef EXTI_InitStruct;
EXTI_InitStruct.EXTI_Line = EXTI_Line0;               // 中断线0(对应PA0)
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;      // 中断模式
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;  // 上升沿触发
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);

4. 配置NVIC中断优先级

NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;         // 中断通道(PA0对应EXTI0)
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; // 抢占优先级
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;       // 子优先级
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);

5. 编写中断服务函数

void EXTI0_IRQHandler(void) {
  if (EXTI_GetITStatus(EXTI_Line0) != RESET) {
    // 处理中断事件(例如翻转LED)
    EXTI_ClearITPendingBit(EXTI_Line0); // 清除中断标志
  }
}

三、配置步骤(HAL库)

1. 使能GPIO时钟

__HAL_RCC_GPIOA_CLK_ENABLE();  // 使能GPIOA时钟

2. 配置GPIO和中断

GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;  // 上升沿触发中断
GPIO_InitStruct.Pull = GPIO_PULLUP;          // 上拉输入
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

3. 配置NVIC

HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);  // 设置优先级
HAL_NVIC_EnableIRQ(EXTI0_IRQn);         // 使能中断

4. 中断服务函数

void EXTI0_IRQHandler(void) {
  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0); // HAL库中断处理函数
}

// 回调函数(在main.c中重写)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
  if (GPIO_Pin == GPIO_PIN_0) {
    // 处理中断事件
  }
}

四、注意事项

  1. 中断标志清除:必须在中断函数中清除标志位,否则会反复进入中断。
  2. 消抖处理:按键等机械开关需在硬件或软件中添加消抖。
  3. 优先级冲突:多个中断同时存在时,需合理分配优先级。
  4. 引脚与中断线映射:例如PA0/PB0/PC0共享EXTI0,需通过AFIOSYSCFG配置。

五、常见问题

  • 中断不触发:检查时钟使能、引脚模式、中断线映射、NVIC配置。
  • 重复进入中断:未清除中断标志或消抖不足。
  • 优先级问题:高优先级中断抢占导致逻辑异常。

通过以上步骤即可完成STM32 GPIO中断配置。建议结合STM32CubeMX工具生成初始化代码以提高效率。

stm32 GPIO中断配置教程

在嵌入式开发中,STM32微控制器因其高性能和丰富的外设而广受欢迎。GPIO(通用输入/输出)中断STM32微控制器中常用的功能之一,它允许开发者在特定引脚上检测到外部信号变化时快速响应。 1.

2024-11-19 15:53:38

STM32如何配置外部中断STM32外部中断配置步骤

STM32如何配置外部中断STM32外部中断配置步骤  作为一款现代化的微控制器,STM32系列芯片在各种应用场合中广泛应用。其中最常见的应用是外部中断。本文将详细介绍如何在STM32配置外部

2023-10-26 17:47:25

STM32 GPIO的外部中断设计

在之前针对STM32GPIO相关API函数及配置使用进行了详细的介绍,GPIO作为输入引脚时,调用相关读信号引脚函数接口就可以在程序的循环中,轮询的对输入信号进行读取检测操作,除了轮询的方式访问

2023-04-14 10:51:53

如何配置GPIO中断功能呢?

如何配置GPIO中断功能呢? GPIO在嵌入式系统中经常用于控制外设,如LED、摄像头、传感器等。除此之外,GPIO还可以被配置中断功能,用于检测输入信号的变化,从而触发中断服务程序。本文将介绍

2023-10-30 09:57:08

关于STM32GPIO配置不同输出速度会有什么影响?

STM32GPIO配置不同输出速度会有什么影响?

2020-03-01 11:53:48

STM32使用GPIO配置的5种方式

STM32使用GPIO配置的5种方式 STM32是常见的一种微控制器,其GPIO模块可以实现对外部设备的控制和数据传输,包括数字I/O口、模拟输入口和输出口等。在STM32中,GPIO模块的配置可以

2023-10-26 17:42:45

如何配置GPIO的外部中断

目录如何配置GPIO的外部中断配置RCC时钟GPIO配置EXTI配置NVIC配置中断服务函数 IRQ_Handler如何配置GPIO的外部中断STM32F103为例,记录配置GPIO外部中断的一般

sunnyking 2021-08-13 08:52:26

STM32 GPIO的API函数配置和使用技巧

本篇开始对STM32GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。

2023-04-14 10:46:46

STM32中断及FreeRTOS中断优先级配置

STM32中断,及FreeRTOS中断优先级配置

2020-03-04 11:45:36

stm32f407如何配置外部中断

这几天又重新学了stm32f4,遇到了一个外部配置的实验,实验内容仅作简单的外部中断,读者只要搞懂其中的原理,稍微复杂的中断就能很好解决。 实验内容:按键KEY0按下,触发外部中断中断函数

2023-03-05 16:48:25

STM32GPIO在实际开发设计的使用配置和技巧

一、前言 本篇开始对STM32GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。 了解过STM32GPIO

2023-06-22 10:22:00

STM32F0xx_ GPIO配置详细过程

STM32F0xx_GPIO配置详细过程

2020-04-08 09:31:31

STM32GPIO操作配置和使用方法

本篇开始对STM32GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理。

2023-07-07 16:50:12

STM32基于标准外设库的外部中断配置

本文介绍了STM32基于标准外设库的外部中断配置,以及基于参考手册如何更加寄存器配置外部中断

2023-11-02 14:13:06

STM32F407 外部中断配置步骤

介绍STM32F407外部中断配置步骤,以按键为例,实现外部中断配置,使用按键触发中断进行LED灯控制。

2023-07-06 14:31:25

STM32外部中断的怎么配置

STM32中断分组STM32外部中断配置过程使用GPIO口接按键进行外部中断配置说明

twerfwerw 2021-03-02 07:34:35

STM32F0xx_ EXIT中断配置详细过程

STM32F0xx_EXIT中断配置详细过程

2020-04-07 14:37:08

STM32的IO外部中断EXTI的使用

一、前言 在之前针对STM32GPIO相关API函数及配置使用进行了详细的介绍,GPIO作为输入引脚时,调用相关读信号引脚函数接口就可以在程序的循环中,轮询的对输入信号进行读取检测操作,除了轮询

2023-06-22 10:21:00

STM32 GPIO外部中断总结

STM32 GPIO外部中断总结一、STM32中断分组:STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发

ldd1211_ 2021-08-16 07:37:05

STM32Cubemx配置GPIO外部中断实验

4.Keil编写功能函数1.找到外部中断回调函数2.在中断回调函数内编写服务函数3.编译并烧录代码4.工程下载地址前言本文将向大家详细演示STM32Cubemx配置GPIO外部中断实验,使用按键来翻转LED电平。提示:以下是本篇文章正文内容,下面案例可供参考一、使用工具STM32F103C8T6核心板S

ldliu 2021-08-16 08:43:09

STM32CubeMX软件去配置GPIO的外部中断

对软件的使用方法已经相对熟悉了很多,最起码知道该去做什么。本节我们继续学习用STM32CubeMX软件去配置GPIO的外部中断这个功能,下一节看看串口的配置方法。本博主使用的STM32F7这款芯片,正好上次项目

泡芙奶昔 2021-08-16 09:33:17

STM32单片机的GPIO输入、输出模式与配置方法

STM32 单片机是一款高性能、低功耗的 32 位微控制器,具有强大的计算能力、灵活的外设模块和实现微控制器应用所需的社区支持。在单片机应用中,GPIO 输入输出模式是必不可少的硬件接口之一。本文将介绍 STM32 单片机的 GPIO 输入、输出模式与配置方法。

2023-08-15 18:23:00

STM32 GPIO外部中断的设置

STM32GPIO外部中断的设置1.中断的分组STM32 的每一个GPIO都能配置成一个外部中断触发源,STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0

偶是糕富帅 2022-01-13 07:26:59

如何使用GPIO口接按键进行外部中断配置

如何对STM32中断进行分组呢?STM32的外部中断配置过程是怎样的?如何使用GPIO口接按键进行外部中断配置呢?

tulin 2021-11-16 08:39:57

如何配置嵌入式Linux的GPIO中断

做个STM32开发的都知道,通过程序配置让普通的GPIO口具有中断功能。这样对于设备检测某些硬件的自动设备要方便的多。那么在嵌入式的Linux是否具有这样的功能呢?答案是肯定的,下面我们就来介绍一下

ronga245 2021-11-04 07:18:42

为什么GPIO配置总是出问题?

STM32开发中,GPIO(通用输入输出)配置看似简单,但在实际开发中,很多人常常会遇到这些困惑:明明按照教程配置GPIO,为什么LED灯就是不亮?为什么有时候按键无法响应,或者响应很慢

2025-04-07 11:59:01

深度剖析GPIO中断

本文介绍 GPIO 中断,包括中断示例及其各种功能。这是上一篇文章的延续,该文章解释了微控制器的并发和中断的概念。

2022-04-27 16:11:30

关于Linux的GPIO中断知识

在嵌入式系统中,经常会用到gpio外部中断来获取外部事件,比如按键、传感器、网络通信等等。一般中断都会绑定一个中断回调函数,来执行产生中断后的一些任务。Linux的中断是操作系统管理的资源,需要在内核层配置中断以及绑定回调函数。

2023-03-24 11:27:32

GPIO做输出还能作外部中断输入吗?

我们这里要谈的是基于硬件模式的外部中断话题。当STM32GPIO作为输出时,可能是通用GPIO输出也可能是基于其它外设复用情况下的输出,即复用输出。

2020-07-05 10:42:56

MSPM0L1306开发板教程之GPIO中断

前面已经演示了如何配置GPIO的输入和输出,这次就接着讲GPIO中断如何使用。

2023-05-14 09:40:53

加载更多