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

    文章

    3588

    浏览量

    129448
  • GPIO
    +关注

    关注

    16

    文章

    1204

    浏览量

    52067
  • 触发中断
    +关注

    关注

    0

    文章

    11

    浏览量

    6565
收藏 人收藏

    评论

    相关推荐

    stm32 GPIO中断配置教程

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

    SOC GPIO操作

    sapphire Soc提供了两个GPIO组每组有4个GPIO,定义GPIO[3:0],其中只有GPIO[1:0]可以支持
    的头像 发表于 11-01 11:06 139次阅读

    GPIO转换电压

    电子发烧友网站提供《GPIO转换电压.pdf》资料免费下载
    发表于 09-21 11:05 0次下载
    <b class='flag-5'>为</b><b class='flag-5'>GPIO</b>转换电压

    esp32已经被配置外部中断的IO口,怎么切换成pwm?

    请问 已经被配置外部中断的IO口 要切换成pwm 模式输出 要如何操作? ps:用到的IO 是 0 5 25 26
    发表于 06-24 06:50

    BLE开启后,GPIO39如果配置输入并且开启中断中断会被一直触发怎么解决?

    问题:BLE开启后,GPIO39如果配置输入并且开启中断中断会被一直触发,有知道怎么解决的吗? 背景: IDF版本: ESP-IDF
    发表于 06-17 07:37

    为什么可以将一个GPIO引脚同时配置输入输出模式

    GPIO_MODE_INPUT_OUTPUT参数,即可将引脚配置输入输出模式。 问题来了:1.为什么可以将一个GPIO引脚同时配置
    发表于 06-05 07:37

    STM32中断分组及外部中断配置过程分享

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

    STM32G071WakeUp中断配置1秒,但实际中断频率却小于1秒是为什么?

    之前用F1的RTC时,有一个秒中断功能,即每一秒产生一个中断,可以在中断里面刷新时间。现在G071的RTC没有了秒中断
    发表于 04-01 07:57

    CY7C63813设置了4个GPIO口响应,调试发现每个周期GPIO才响应一次中断,如何让GPIO口重复响应中断

    CY7C63813设置了4个GPIO口响应,调试发现每个周期GPIO才响应一次中断,如何让GPIO口重复响应中断
    发表于 02-22 07:41

    GD32 MCU如何将烧录口配置GPIO使用?

    如果大家在进行GD32 MCU开发时发现GPIO引脚使用不足,可以尝试将烧录口配置GPIO使用,这样就可以多出几个引脚使用,但使用的时候如何配置
    的头像 发表于 02-20 10:18 1970次阅读
    GD32 MCU如何将烧录口<b class='flag-5'>配置</b><b class='flag-5'>为</b><b class='flag-5'>GPIO</b>使用?

    PSOC6 GPIO无法触发中断的原因?怎么解决?

    ),但是gpio管脚的中断处理函数却未触发。 GPIO配置如下: 中断服务程序以及初始化代码如下: static void Charge
    发表于 02-02 08:01

    CYT4BF8CES检测将TCPWM配置检测PWM输入的模式,中断如何触发

    请问CYT4BF8CES中,检测将TCPWM配置检测PWM输入的模式,中断如何触发?我用图中的SDL,无法进入中断处理函数。
    发表于 02-01 07:21

    怎么根据外围电路配置单片机gpio的时钟

    怎么根据外围电路配置单片机gpio的时钟  根据外围电路配置单片机GPIO的时钟是一项重要的任务,它决定了单片机与外部设备的通信速度和稳定性。在本文中,我将详细介绍如何根据外围电路
    的头像 发表于 01-31 10:57 1101次阅读

    TC387 eru如果上升沿配置外部输入中断配置时引脚的值中断会触发吗?

    如果上升沿配置外部输入中断,如果配置时引脚的值高,中断会触发吗?还是必须将其推向低位然后再次
    发表于 01-30 08:08

    tc387是否可以将配置外部中断的引脚读取标准输入gpio

    是否可以将配置外部中断的引脚读取标准输入 gpio? 例如: 如果我配置 ifx scu_r
    发表于 01-26 07:55