GPIO引脚

一、使用平台

MCU

GD32F450ZKT6

处理器Cortex-M4
SRAM256k
Flash3072k
SDK

GD32F4xx_Firmware_Library_V2.1.2

二、GPIO简介

2.1 GPIO是通用I/O引脚

        GPIO是指单片机上的通用I/O引脚,分别为PA0~PA15,PB0~PB15,PC0~PC15,PD0~PD15,PE0~PE15,PF0~PF15,PG0~PG15,PH0~PH15和PI0~PI11。各片上设备用其来实现逻辑输入/输出功能。每个 GPIO 端口有相关的控制和配置寄存器以满足特定应用的需求。GPIO 引脚上的外部中断在中断/事件控制器(EXTI)中有相关的控制和配置寄存器。

       

2.2 GPIO概念

        GPIO口一是个比较重要的概念,用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。

三、GPIO模式

3.1 输入模式

        每个通用I/O口都可以通过32位寄存器配置为输入模式

浮空输入模式

浮空输入.png

 没有上拉电阻和下拉电阻,没有输入的情况下,读取上一次的电平状态。

模拟输入模式

不经过施密特触发器,没有上拉电阻和下拉电阻。

上拉输入模式

在上拉电阻闭合时,读取到高电平。

下拉输入模式

在下拉电阻闭合时,读取到低电平。

3.2 输出模式

开漏输出、推挽输出、复用开漏输出、复用推挽输出。

 

开漏输出模式

推挽输出模式

注意:推挽输出在开漏2输出的基础上增加了一个p-mos管,所以推挽输出既能输出高电平也能输出低电平。而开漏输出不能输出高电平。

(复用:GPIO上的数据来自片上外设。通用:GPIO上的数据来自内核控制的输出数据寄存器)

3.3 附加功能

        部分GPIO引脚可用作ADC和DAC的附加功能,同时要设置成模拟模式。每个GPIO引脚都可以配置为上拉、下拉或无上拉/下拉。除模拟模式外,所有的 GPIO 引脚都具备大电流驱动能力。

四、GPIO用途


4.1 用于输出控制信号---控制LED的开关

        GPIO口输出高电平的时候,LED灯亮。没有输出的时候,LED灯就关闭。

        GPIO控制LED

rcu_periph_clock_enable(RCU_GPIOD);        //使能LED时钟

gpio_mode_set(GPIOD,GPIO_MODE_OUTPUT, GPIO_PUPD_NONE,GPIO_PIN_4);           //设置GPIO为输出模式
gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_4);//设置GPIO为推挽输出模式
gpio_bit_reset(GPIOD,GPIO_PIN_4);          //设置引脚输出低电平

gpio_bit_set(GPIOD,GPIO_PIN_4);            //设置引脚输出高电平

 

 

4.2 用于按键检测

GPIO口空闲时为高电平,每当按键按下就会被拉为低电平,这时就会检测到按键按下。按键抬起时,其恢复为高电平,就被检测到按键松开。

按键检测

rcu_periph_clock_enable(RCU_GPIOA);     //使能GPIO
rcu_periph_clock_enable(RCU_SYSCFG);	//使能系统时钟
gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE,GPIO_PIN_0);  //设置引脚配置为输入

if(RESET == gpio_input_bit_get(GPIOA,GPIO_PIN_0)); //检测按键是否按下

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值