基于STM32+认识GPIO引脚的8种输入输出及引脚配置

前言

       本次我们认识一下GPIO引脚的输入输出,以及在使用GPIO引脚应该怎么配置,大部分是自己收集和整理,如有侵权请联系我删除。

交流群:717237739

如果觉得有用点赞关注收藏三连,多谢支持

本博客内容原创,创作不易,转载请注明

一 、GPIO是什么

        GPIO(general porpose intput output):通用输入输出端口的简称。可以通过软件控制其输出和输入。stm32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通信,控制以及数据采集的功能。

I/O端口位的基本结构

二 、GPIO的工作模式

通过 GPIO 内部的结构关系,GPIO的引脚分为了输入和输出,以及还有一个复用的功能,决定了 GPIO 可以配置成以下几种模式。

输入模式(浮空、上拉、下拉、模拟)--- STM32获取外界的电平

        在输入模式时,施密特触发器打开,输出被禁止。
        可通过输入数据寄存器GPIOx_IDR 读取 I/O 状态。
        输入模式可以配置为模拟、上拉、下拉以及浮空模式。上拉和下拉输入很好理解,默认的电平由上拉或者下拉决定。
        浮空输入的电平是不确定的,完全由外部的输入决定,一般接按键的时候可以使用这个模式。
        模拟输入则用于 ADC 采集。

1)● 输入浮空:GPIO_Mode_IN_FLOATING = 0x04

        获取的电平是不确定的,如果想得到高电平或者低电平,必须外接上拉或者下拉电阻
        当IO口有外部上拉或者下拉电阻时,可以配置为浮空输入

         数据通道中仅接入TTL触发器(作用是将相对缓慢变化的模拟信号变成矩形信号)整形,随后输入输入数据寄存器,该种工作模式未接入任何上拉/下拉电阻。

         模式特点:在该引脚悬空(无信号输入)的情况下,读取该端口的电平是不确定的。 适用场合:外部按键输入/USART RX引脚。

2)● 输入上拉:GPIO_Mode_IPU = 0x48

        内部上拉,IO得到的是高电平

        在无信号输入时端口电位受上拉电阻钳制,I/O端口输入电平始终保持为高电平;而当端口输入电平为低电平时,I/O端口输入电平为低电平。

        适用场合:需要IO内部上拉电阻输入时,器件的外部中断(IRQ)引脚触发中断条件为下降沿触发/低电平触发,这样在无信号输入时始终保持高电平,如果有事件触发中断IRQ可以输出一个低电平,进而可产生(下降沿/低电平)中断。
        例如单片无线收发器芯片NRF24L01的IRQ引脚的工作模式即为上拉输入模式。

3)● 输入下拉:GPIO_Mode_IPD = 0x28

        内部下拉,IO得到的是低电平
        模式特点:在无信号输入时端口电位受下拉电阻钳制,I/O端口输入电平始终保持为低电平;而当端口输入电平为高电平时,I/O端口输入电平为高电平。
        适用场合:需要IO内部下拉电阻输入时,器件的外部中断(IRQ)引脚触发中断条件为上升沿触发/高电平触发时,该端口可以选择下拉输入模式。

4)●模拟输入:GPIO_Mode_AIN = 0x0

        模拟输入只能在单片机的ADC和DAC中使用
        数据通道不接入任何处理单元(TTL触发器/钳制电阻),直接输入MCU内部的处理单元。
        模式特点:相较于其他输入模式只能读取到逻辑高/低电平(数字量),该模式能读取到细微变化的值(模拟量)。

输出模式(推挽/ / 开漏)--- STM32提供给外界的电平

1)通用推挽输出:GPIO_Mode_Out_PP = 0x10

        输出具有驱动能力,当CPU输出逻辑’0’时,I/O端口输出低电平,而当CPU输出逻辑’1’时,I/O端口输出高电平,通常作为普通的GPIO用于驱动LED、数码管等电子元器件或输出控制某个信号。

        驱动的能力比较强,能直接驱动 LED等
        确定的输出高电平或低电平
        可以不外接上拉或下接电阻

2)通用开漏输出:GPIO_Mode_Out_OD = 0x14

适合做电流型的驱动,其吸收电流能力较强。
输出的高低电平是不确定的,是由外界的上拉或下拉电阻决定
开漏输出高电平,必须接上拉电阻
开漏输出低电平,必须接下拉电阻
总结:开漏输出它输出的电平由外部的上拉或下拉电阻决定

复用功能(推挽/ / 开漏)

        复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式,但是输出信号源于其它外设,输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号。

1)复用推挽输出:GPIO_Mode_AF_PP = 0x18

        在STM32中,一个引脚通常可作为普通GPIO来使用,但通常有多个复用模块对应着同一个引脚,那么当这个GPIO作为内置外设引脚时,就叫做复用模式。

适用场合:常见片内外设(USART TX引脚/SPI/PWM输出等等)

2)GPIO开漏复用输出:GPIO_Mode_AF_OD = 0x1C

        与开漏输出特性一致,只不过引脚选择了复用功能。

        适用场合:常见片内外设(I2C/SMBus等等)

        引脚选择复用功能,需要做开漏输出的.

        注意事项:当GPIO引脚的主功能为驱动片上外设(如I2C)时,此时也可选择对应推挽/开漏输出模式而不启用复用引脚功能。此外如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。

输入输出对应关系:

 外设的GPIO配置:(来自STM32中文参考手册)

高级定时器TIM1/TIM8

 通用定时器TIM2/3/4/5

USART 引脚配置

SPI引脚配置

I2S引脚配置

 I2C接口引脚配置

其它I/O功能 

 总结:

        以上就是GPIO8种工作模式的介绍和日常使用了,新手小白如果不懂得引脚怎么配置就跟着参考手册的配置的方法,原理我们大概懂就行了,相信你通过学习完上面的外设后,再次配置引脚的模式也会得心应手的。

        点赞关注双击博主,不定期分享单片机知识,互相学习交流。

交流群:717237739

如果觉得有用点赞关注收藏三连,多谢支持

本博客内容原创,创作不易,转载请注明

  • 24
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值