【STM32】GPIO输出介绍

GPIO介绍

GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式。输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。

 引脚电平:0V~3.3V,部分引脚可容忍5V
STM32 的 IO 口可以由软件配置成如下 8 种模式:
1、 输入浮空
2、 输入上拉
3、 输入下拉
4、 模拟输入
5、 开漏输出
6、 推挽输出
7、 推挽式复用功能
8、 开漏复用功能

GPIO基本结构:

GPIO位结构:

1.为了避免引脚悬空导致的输入数据不确定,我们就需要加入上拉或者下拉电阻。如果加入上拉电阻,当引脚悬空时,有上拉电阻来保证引脚的高电平,所以上拉输入默认为高电平的输入方式,反之亦然

2.施密特触发器可以对输入电压进行整形,如果输入电压大于某一阈值,输出电压就会瞬间变为高电平。右侧引脚是由外部输入的,即使是数字信号也可能会失真,信号如果在下限附近来回横跳,但只要没有跳到上限去,电平就不会发生变化,输出仍然稳定。

GPIO模式:

模式名称

性质

特征

浮空输入

数字输入

可读取引脚电平,若引脚悬空,则电平不确定

上拉输入

数字输入

可读取引脚电平,内部连接上拉电阻,悬空时默认高电平

下拉输入

数字输入

可读取引脚电平,内部连接下拉电阻,悬空时默认低电平

模拟输入

模拟输入

GPIO无效,引脚直接接入内部ADC

开漏输出

数字输出

可输出引脚电平,高电平为高阻态,低电平接VSS

推挽输出

数字输出

可输出引脚电平,高电平接VDD,低电平接VSS

复用开漏输出

数字输出

由片上外设控制,高电平为高阻态,低电平接VSS

复用推挽输出

数字输出

由片上外设控制,高电平接VDD,低电平接VSS

浮空/上拉/下拉输入:

 

使用浮空输入时,端口一定要接上一个连续的驱动源,不能出现悬空的状态。一个端口只能有一个输出但可以有多个输入。

模拟输入: 

使用ADC时,将引脚直接配置为模拟输入即可。 

开漏/推挽输出:

开漏输出的高电平呈现为高组态,没有驱动能力。 P-MOS如果无效,就是开漏输出。

复用开漏/推挽输出:

 输出的控制由片上外设决定。

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32是一款常用的微控制器,GPIO是其中一个非常重要的外设之一。GPIO全称是General Purpose Input/Output,翻译过来就是通用输入/输出口。它可以作为输入口,也可以作为输出口,用于连接外部电路或者读取外部电路的信号。 在STM32中,GPIO有很多种不同的模式和配置。其中最常用的是输出模式,用于控制外部电路的高低电平。一般而言,使用GPIO输出需要先进行如下几个步骤: 1. 配置GPIO的模式:将GPIO模式设置为输出模式,可以使用STM32提供的库函数进行配置; 2. 配置GPIO的速率:可以设置GPIO的速率以达到节约功耗或提高带宽等目的; 3. 控制GPIO的状态:可以通过相应的库函数对GPIO的状态进行设置,如将GPIO设置为高电平或低电平。 以下是一个简单的GPIO输出示例代码: ``` #include "stm32f10x.h" void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //打开GPIOA时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //设置GPIOA.0为输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出速率为50MHz GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA } int main(void) { GPIO_Configuration(); //配置GPIO while (1) { GPIO_SetBits(GPIOA, GPIO_Pin_0); //将GPIOA.0设置为高电平 Delay(500); //延时 GPIO_ResetBits(GPIOA, GPIO_Pin_0); //将GPIOA.0设置为低电平 Delay(500); //延时 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值