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

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

3天内不再提示

如何配置GPIO为中断功能呢?

工程师邓生 来源:未知 作者:刘芹 2023-10-30 09:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如何配置GPIO为中断功能呢?

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

一、GPIO基础

GPIO是General Purpose Input/Output的缩写,中文意为通用输入输出口。简单来说,GPIO是一组可编程的通用I/O端口,可以设置为输入模式或输出模式,用于连接嵌入式系统的外部设备、传感器或其他模块。

头文件:#include "gpio.h"

二、GPIO配置

初始化GPIO之前,需设置GPIO的工作模式,即按照需要设置GPIO的输入输出方向。常见的模式有三种:

1.输入模式

输入模式下,GPIO端口会作为外部信号的输入口,用于检测外设给出的信号。

gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);//PA0输入,无上下拉,外设接高低电平

2.输出模式

输出模式下,GPIO端口会作为外部信号的输出口,用于控制外设等。

gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT_PP, GPIO_PUPD_NONE, GPIO_PIN_0);//PA0输出,无上下拉,外设接高低电平

3.复用模式

复用模式下,GPIO端口既可以作为输入,也可以作为输出,通常用于与特定功能模块协同工作,如UART、SPI和I2C等。

gpio_mode_set(GPIOA, GPIO_MODE_AF_PP, GPIO_PUPD_NONE, GPIO_PIN_0);//PA0复用模式,无上下拉,外设接高低电平

三、中断配置

配置GPIO中断需要三个步骤:

1.使能GPIO外部中断

gpio_exti_source_select(GPIO_PortSourceGPIOC, GPIO_PinSource0);//GPIOC0触发外部中断

2.使能中断线

nvic_irq_enable(EXTI0_IRQn, LL_PRIORITY_DEFAULT, EXTI0_IRQ_HANDLER);//使能中断,EXTI0_IRQ_HANDLER为中断处理函数名

3.设置中断触发方式

EXTI_TriggerTypeDef trigger;
trigger = EXTI_Trigger_Falling; //设置中断触发方式为下降沿触发
exti_init(EXTI_Line0, trigger, LL_EXTI_PULL_NONE);//设置GPIOC0触发的中断线,LL_EXTI_PULL_NONE不开启上下拉

中断服务程序:

void EXTI0_IRQHandler(void)
{
if (exti_get_flag_status(EXTI_Line0)) //判断中断线0是否被触发
{
//执行中断服务程序
exti_clear_flag(EXTI_Line0); //清除中断标志位
}
}

这样,就可以使用GPIO对外设进行中断检测并执行相应的服务程序了。

总结

GPIO作为嵌入式系统中常用的外设接口,可以配置为输入输出端口,也可与其他模块协同工作。配置GPIO为中断功能,可以实现对外部信号的检测和响应,扩展系统功能。以上就是配置GPIO为中断功能的相关操作步骤,希望对大家有所帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3846

    浏览量

    134247
  • GPIO
    +关注

    关注

    16

    文章

    1338

    浏览量

    56752
  • 触发中断
    +关注

    关注

    0

    文章

    11

    浏览量

    6721
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MIMXRT1170中断问题,如何将gpio8_29定义外部中断

    我想请教一些关于GPIO外设中断方面的问题。在MIMXRT1170_igpioinput_interrupt示例中,GPlO13_io0引l脚被定义输入并启用了上升沿中断。我想要
    发表于 04-28 06:09

    SWD端口复用为GPIO功能

    GPIO_SWD2GPIO(); //配置 PA13 / PA14 数字功能 - 输出 REGBITS_CLR(CW_GPIOA->ANALOG, bv13 | bv1
    发表于 01-29 06:56

    【MCU学习】GPIO详解

    本实验通过一个“小实验框架 GPIO Mode Lab”,在同一个 GPIO 引脚上依次配置不同模式,并用 ADC 探头测量电压、同时读取数字电平,系统化地观察。
    的头像 发表于 01-24 11:45 5621次阅读
    【MCU学习】<b class='flag-5'>GPIO</b>详解

    掌握 LuatIO:GPIO 复用模式初始化配置全流程解析

    在使用 LuatIO 进行嵌入式应用开发时,合理配置 GPIO 的复用功能是实现外设控制的前提。本文全面解析 GPIO 引脚由普通 IO 转换为复用
    的头像 发表于 01-23 15:28 3064次阅读
    掌握 LuatIO:<b class='flag-5'>GPIO</b> 复用模式初始化<b class='flag-5'>配置</b>全流程解析

    ElfBoard技术贴|如何在【RK3588】ELF 2开发板实现GPIO功能复用

    IOMUX(引脚功能复用)是芯片厂商高效利用有限引脚资源而设计的关键技术,它允许单个物理引脚通过软件灵活配置多种功能(如
    的头像 发表于 12-29 10:37 1718次阅读
    ElfBoard技术贴|如何在【RK3588】ELF 2开发板实现<b class='flag-5'>GPIO</b><b class='flag-5'>功能</b>复用

    CW32L010的串口输出功能

    在深度休眠模式下进行数据的接收,接收完成中断可以唤醒 MCU 回到运行模式。 注意: 仅 UART1 支持 LIN 和定时器功能:UART2 可通过片内外设互联与 BTIM/GTIM/ATIM 的从
    发表于 11-26 06:04

    CW32F030C8T6:GPIO配置的全攻略

    : 输入模式(浮空、上拉、下拉)。 输出模式(推挽、开漏)。 复用功能(UART、SPI、I2C等外设映射)。 模拟模式(ADC输入)。 中断支持:所有GPIO均可配置
    发表于 11-13 06:38

    AXI GPIO扩展e203 IO口简介

    主要有以下功能: 1.GPIO引脚控制:AXI-GPIO可以控制多个GPIO引脚的输入输出状态,每个GPIO引脚占用1个比特位。可以通过
    发表于 10-22 08:14

    【NCS随笔】如何进入system_off深度睡眠模式以及配置GPIO中断唤醒

    【NCS随笔】如何进入system_off深度睡眠模式以及配置GPIO中断唤醒 本文章主要是讲解NCS下面使用nRF54L15如何进入system_off模式,以及如何配置通过按键唤醒
    的头像 发表于 09-29 00:56 1064次阅读
    【NCS随笔】如何进入system_off深度睡眠模式以及<b class='flag-5'>配置</b><b class='flag-5'>GPIO</b><b class='flag-5'>中断</b>唤醒

    使用rt-thread studio ,配置某对GPIO串口,比如配置PA0与PA1 uart1 ;如何操作?

    请教一下,使用rt-thread studio ,配置某对GPIO串口,比如配置PA0与PA1 uart1 ;如何操作? 我在rt-th
    发表于 09-11 07:50

    请问为什么M0519引脚的某些部分在配置GPIO功能后无法将输出控制到高电平或低电平状态?

    为什么M0519引脚的某些部分在配置GPIO功能后无法将输出控制到高电平或低电平状态?
    发表于 08-27 15:00

    何时使用 GPIO 中断和外部中断

    何时使用 GPIO 中断和外部中断
    发表于 08-26 07:27

    如何确定GPIO中断触发源?

    如何确定GPIO中断触发源?
    发表于 08-26 06:08

    是否必须使用LuatIO?Air8000 GPIO配置与设计规范深度解析

    在Air8000的GPIO应用开发中,LuatIO的角色至关重要。本文剖析其必要性,结合设计注意事项,开发者提供从配置到优化的全流程指南。 想要4G+GNSS+WiFi+BLE+TTS+VOLTE
    的头像 发表于 07-29 13:54 804次阅读
    是否必须使用LuatIO?Air8000 <b class='flag-5'>GPIO</b><b class='flag-5'>配置</b>与设计规范深度解析

    请问CYW20719B2 的中断功能该怎么用?

    请问CYW20719B2 的中断功能该怎么用? CYW20719B2的说明书中有中断功能的叙述, Device configurator也可以配置
    发表于 07-08 07:03