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

    文章

    3817

    浏览量

    133865
  • GPIO
    +关注

    关注

    16

    文章

    1333

    浏览量

    56430
  • 触发中断
    +关注

    关注

    0

    文章

    11

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SWD端口复用为GPIO功能

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

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

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

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

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

    CW32F030C8T6:GPIO配置的全攻略

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

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

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

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

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

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

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

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

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

    RK3568驱动指南GPIO子系统 GPIO操作函数实验

    电子RK3568开发板驱动指南GPIO子系统 GPIO操作函数实验
    的头像 发表于 05-28 15:24 1492次阅读
    迅<b class='flag-5'>为</b>RK3568驱动指南<b class='flag-5'>GPIO</b>子系统 <b class='flag-5'>GPIO</b>操作函数实验

    RK3568驱动指南GPIO子系统实战:实现动态切换引脚复用功能

    RK3568驱动指南GPIO子系统实战:实现动态切换引脚复用功能
    的头像 发表于 05-22 14:27 2330次阅读
    迅<b class='flag-5'>为</b>RK3568驱动指南<b class='flag-5'>GPIO</b>子系统实战:实现动态切换引脚复用<b class='flag-5'>功能</b>

    GPIO配置的工作原理是什么?

    我使用 EZ-USB 配置实用程序,我想知道是否有人知道 GPIO 配置的工作原理。 例如,GPIO0 可以用作传感器复位,我知道这个 GPIO
    发表于 05-19 06:56

    FCX3无法进入GPIO中断是怎么回事?

    我尝试将GPIO20配置中断引脚,若输入上升沿,则让GPIO24引脚输出低电平;若输入下降
    发表于 05-14 07:38

    如何同时使用CyU3PMipicsiInitializeGPIO和CyU3PGpioInit的中断功能

    开发环境:cy3065CX3/ SDK Version 1.3.5 在初始化阶段,先初始化MIPI模块。调用CyU3PMipicsiInitializeGPIO 接口,然后我想配置GPIO 44
    发表于 05-14 07:04

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO中断

    1、实验简介 本实验将演示如何在小凌派-RK2206开发板上使用IOT库的GPIO中断模式,进行GPIO编程开发。 例程将创建一个任务,通过配置GP
    发表于 04-21 11:08

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO中断

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的GPIO中断模式,进行GPIO编程开发。例程将创建一个任务,通过配置GPIO
    的头像 发表于 04-21 10:39 1243次阅读
    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>GPIO</b><b class='flag-5'>中断</b>