STM32学习笔记之--GPIO

GPIO是通用输入输出端口,常用于STM32芯片的外部通讯和控制。文章介绍了GPIO的保护电路,推挽和开漏输出模式,以及输入模式,包括模拟输入、浮空、上下拉输入。此外,还讨论了复用功能在串口通信等场景的应用。配置GPIO的关键寄存器如输出数据寄存器和输入数据寄存器也在文中提及。
摘要由CSDN通过智能技术生成

1--GPIO简介

  • GPIO(General Purpose Input Output )GPIO 是通用输入输出端口的简称 简单来说就是 STM32 可控制的引脚 STM32 芯片的 GPIO 引脚与外部设备连接起来 从而实现与外部通讯 控制以及数据采集的功能 STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 STM32F103VET6 型号的芯片有 GPIOA、 GPIOB、 GPIOC 至 GPIOE 共 5 组 GPIO,芯片一共 100 个引脚,其中 GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。

2--GPIO框图详解

从右往左边看 最右端就是STM32的GPIO引脚 其余的部分在芯片内部

  • 1--稳压二极管

    引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入 当引脚电压高于 VDD 时 上 方的二极管导通 当引脚电压低于 VSS 时 下方的二极管导通 防止不正常电压引入芯片导致芯片烧毁 尽管有这样的保护 并不味着 STM32 的引脚能直接外接大功率驱动器件 如直接驱动电机 强制驱动要么电机不转,要么导致芯片烧坏,必须要加大功率及隔离电路驱动。

推挽输出模式一般应用在输出电平为 0 和 3.3 伏而且需要高速切换开关状态的场合。在 STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。

开漏输出一般应用在 I2C、 SMBUS 通讯等需要“线与”功能的总线电路中。除此之外,还用在电平不匹配的场合,如需要输出 5 伏的高电平,就可以在外部接一个上拉电阻,上拉电源为 5 伏,并且把 GPIO 设置为开漏模式,

  • 3--输出数据寄存器

前面提到的双 MOS 管结构电路的输入信号,是由 GPIO“输出数据寄存器 GPIOx_ODR”提供的,因此我们通过修改输出数据寄存器的值就可以修改 GPIO 引脚的输出电平。而“置位/复位寄存器GPIOx_BSRR”可以通过修改输出数据寄存器的值从而影响电路的输出。

  • 4--复用功能输出

复用功能输出 中的复用 是指STM32的片上外设对GPIO口的直接控制 此时GPIO口作为外设功能的一部分

例如在进行串口通信的时候 如果用到某个GPIO口作为TX引脚 那么就可以将此GPIO口设置为复用推挽输出 由串口外设直接控制GPIO口

  • 5--输入数据寄存器

GPIO 引脚经过内部的上、下拉电阻,可以配置成上/下拉输入,然后再连接到肖特基触发器,信号经过触发器后,模拟信号转化为 0、 1 的数字信号,然后存储在“输入数据寄存器 GPIOx_IDR”中,通过读取该寄存器就可以了解 GPIO 引脚的电平状态。

不经过肖特基触发器 就是输入的原始的电压

  • 6--复用功能输入

与“复用功能输出”模式类似,在“复用功能输入模式”时, GPIO 引脚的信号传输到 STM32 其它片上外设,由该外设读取引脚状态。同样,如我们使用 USART 串口通讯时,需要用到某个 GPIO 引脚作为通讯接收引脚,这个时候就可以把该 GPIO 引脚配置成 USART 串口复用功能,使 USART 可以通过该通讯引脚的接收远端数据。

  • 7--模拟输入输出

当 GPIO 引脚用于 ADC 采集电压的输入通道时,用作“模拟输入”功能,此时信号是不经过施密特触发器的,因为经过施密特触器后信号只有 0、 1 两种状态,所以 ADC 外设要采集到原始的模拟信号,信号源输入必须在施密特触发器之前。

3:总结输出输出模式

  • 输入模式(模拟/浮空/上拉/下拉 )

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

  • 输出模式(推挽/开漏 )

在输出模式中,推挽模式时双 MOS 管以轮流方式工作,输出数据寄存器 GPIOx_ODR 可控制 I/O输出高低电平。开漏模式时,只有 N-MOS 管工作,输出数据寄存器可控制 I/O 输出高阻态或低电平。输出速度可配置,有 2MHz10MHz50MHz 的选项。此处的输出速度即 I/O 支持的高低电平状态最高切换频率,支持的频率越高,功耗越大,如果功耗要求不严格,把速度设置成最大即可。

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

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

浮空输入input floatingGPIO_Mode_IN_FLOATING
上拉输入input pull upGPIO_Mode_IPU
下拉输入input pull downGPIO_Mode_IPD
模拟输入AnlogGPIO_Mode_AIN
推挽输出output push pullGPIO_Mode_Out_PP
开漏输出output open drainGPIO_Mode_Out_OD
复用推挽输出GPIO_Mode_AF_ODAlternate function push pull output
复用开漏输出GPIO_Mode_AF_PPAlternate function open drain output
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值