0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32 GPIO的八种工作模式

硬件攻城狮 来源:CSDN技术社区rivencode 2024-11-06 09:40 次阅读

一.GPIO的简介

GPIO (general purpose input output)是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

1.引脚全是GPIO嘛?

答案是否定的,不是所有引脚都是GPIO

STM32F103VET6引脚图

0a1e04fa-90a2-11ef-a511-92fbcf53809c.png

STM32 芯片的 GPIO 被分成很多组,每组有 16 个引脚,如型号为 STM32F103VET6 型号的芯片有 GPIOA、GPIOB、GPIOC 至 GPIOE 共 5 组 GPIO,例如GPIOA(PA0~PA15 16个引脚)芯片一共 100 个引脚,其中GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能

这100个引脚中除了GPIO还有特殊功能的引脚,例如复位引脚,电源引脚…

0a59b82e-90a2-11ef-a511-92fbcf53809c.png

2.GPIO的输入输出模式

GPIO可配置8种模式

输出模式下可控制端口的输出高低电平,可用于驱动LED、控制蜂鸣器、模拟通信协议输出时序(SPI I2C 等)等

输入模式下可读取端口的高低电平或电压,用于读取按键输入,外接模块电平信号输入,ADC电压采集、模拟通信协议接收数据(SPI I2C 等)等

3.GPIO基本结构

0a9048d0-90a2-11ef-a511-92fbcf53809c.png

每个GPIO端口对应16个引脚,例GPIOA(PA0~PA15)

内核cpu就可以通过APB2总线对寄存器读写,完成输出电平和读取电平的功能

二.GPIO功能框图

0abe6800-90a2-11ef-a511-92fbcf53809c.png

保护二极管

芯片的引脚电平0~3.3V,部分引脚可以5V,引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入

1.当引脚电压高于VDD 时,上方的二极管导通

0af28144-90a2-11ef-a511-92fbcf53809c.png

防止过高电压进入芯片内部烧坏芯片

2.当引脚电压低于 VSS 时,下方的二极管导通

0b27ef6e-90a2-11ef-a511-92fbcf53809c.png

防止电压过低,从芯片内部汲取电流

施密特触发器

0b4c476a-90a2-11ef-a511-92fbcf53809c.png

具有滤波的作用,就是让通过的电平输出稳定的高低电平

0b781746-90a2-11ef-a511-92fbcf53809c.png

三.GPIO的8种工作模式

0bb03f54-90a2-11ef-a511-92fbcf53809c.png

1.浮空,上拉,下拉输入

0bfb5782-90a2-11ef-a511-92fbcf53809c.png

在输入模式时,施密特触发器打开,输出被禁止,可通过输入数据寄存器 GPIOx_IDR读取 I/O 状态。

由于电阻阻值很大这里的上拉下拉输入都是弱上拉 弱下拉,为了对外部输入产生很大的影响

上拉输入:给一个默认的高电平也就是说当没有外部输入时默认输入高电平

0c38f0ba-90a2-11ef-a511-92fbcf53809c.png

下拉输入:给一个默认的低电平也就是说当没有外部输入时默认输入低电平

0c616db0-90a2-11ef-a511-92fbcf53809c.png

浮空输入:如果输入引脚啥都不接,此时输入电平极易受外界的干扰导致输入电平不确定,完全由外部的输入决定。

0c8f2822-90a2-11ef-a511-92fbcf53809c.png

2.模拟输入

这模式主要为片上外设ADC而配置,从外部读取模拟信号

模拟信号:测试信号未经过采样前,均是时间和幅值均是连续的信号称为模拟信号,例如连续变化的电压,电流,温度等等。

数字信号:模拟信号经等间隔“采样”及幅值量化以后,时间和幅值均是不连续的(离散)的信号,例如0 /1

0cc7a51c-90a2-11ef-a511-92fbcf53809c.png

这里不需要经过施密特滤波,人家本来就要连续变化的模拟量

3.推挽和开漏输出

● 施密特触发输入被激活

● 弱上拉和下拉电阻被禁止

● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器

● 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态

● 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值

除了模拟输入的这种模式会关闭数字输入功能其他七种模式,都可以通过输入寄存器读取I/O状态,例:在模拟I2C实验中把GPIO的工作模式配置为开漏输出时同时也可以读取引脚电平状态,现在不知道不要紧后面会详细讲解

在输出模式中,推挽模式时双 MOS 管以轮流方式工作,输出数据寄存器 GPIOx_ODR可控制 I/O 输出高低电平。开漏模式时,只有 N-MOS 管工作,输出数据寄存器可控制 I/O输出高阻态或低电平。

1.推挽输出

0cfccb52-90a2-11ef-a511-92fbcf53809c.png

当输出寄存器输出高电平,则引脚也输出高电平

0d211a2a-90a2-11ef-a511-92fbcf53809c.png

当输出寄存器输出低电平,则引脚也输出低电平

0d51cf8a-90a2-11ef-a511-92fbcf53809c.png

2.开漏输出

当输出寄存器输出高电平,则引脚输出高阻态

0d8fd0dc-90a2-11ef-a511-92fbcf53809c.png

当输出寄存器输出低电平,则引脚输出低电平

0dbbab6c-90a2-11ef-a511-92fbcf53809c.png

4.复用功能推挽开漏输出

复用功能模式中,输出使能,输出速度可配置,可工作在开漏及推挽模式, 但是输出信号源于其它外设

输出数据寄存器 GPIOx_ODR 无效;输入可用,通过输入数据寄存器可获取 I/O 实际状态,但一般直接用外设的寄存器来获取该数据信号

这里以串口的发送TX和接收RX引脚为例

串口的发送引脚TX

0dff6adc-90a2-11ef-a511-92fbcf53809c.png

串口的接收引脚RX

0e2d0a32-90a2-11ef-a511-92fbcf53809c.png

这里串口外设不知道是什么不要紧,以后会细讲只要指到复用功能的推挽与开漏输出与普通的推挽与开漏输出只是输出的寄存器换成外设的寄存器

四.GPIO的寄存器

通过对 GPIO 寄存器写入不同的参数,就可以改变 GPIO 的工作模式,要了解具体寄存器时一定要查阅《STM32F10X-中文参考手册》中对应外设的寄存器说明。

端口配置低寄存器

0e57e374-90a2-11ef-a511-92fbcf53809c.png

在 GPIO 外设中,控制端口高低控制寄存器 CRH 和 CRL 可以配置每个 GPIO 的工作模式和工作的速度,每 4 个位控制一个 IO,CRH 控制端口的高八位,CRL 控制端口的低 8 位,具体的看 CRH 和 CRL 的寄存器描述

端口配置低寄存器

0ea6bbc0-90a2-11ef-a511-92fbcf53809c.png

端口输出寄存器

0edab6d2-90a2-11ef-a511-92fbcf53809c.png

端口位设置/清除寄存器

0f134b6e-90a2-11ef-a511-92fbcf53809c.png

端口位清除寄存器

0f48e562-90a2-11ef-a511-92fbcf53809c.png

端口位清除寄存器

0f8c5a7c-90a2-11ef-a511-92fbcf53809c.png

总结

大家一定要把八种GPIO的模式都弄清楚原理,为后面学习打下坚实的基础,本文就到这里。

来源:https://blog.csdn.net/k666499436/article/details/123845466

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2264

    文章

    10853

    浏览量

    354190
  • 端口
    +关注

    关注

    4

    文章

    944

    浏览量

    31977
  • 引脚
    +关注

    关注

    16

    文章

    1171

    浏览量

    50124
  • GPIO
    +关注

    关注

    16

    文章

    1188

    浏览量

    51810

原文标题:拒绝枯燥繁琐!详解STM32-GPIO端口的八种工作模式 这次真的学会了

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【转载】STM32GPIO工作模式区别

    在Cortex-M3里,对于GPIO的配置种类有8:(1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入(3)
    发表于 02-05 14:55

    STM32CubeMX-GPIO工作模式 精选资料分享

    STM32IO口的工作模式:1)、GPIO_Mode_IN_FLOATING:浮空输入2)、
    发表于 07-22 08:36

    GPIO工作模式介绍

    一、GPIO介绍GPIO:就是一个引脚作为输入或者输出。GPIO工作
    发表于 01-24 06:52

    了解STM32输出模式

    ​ 在官方库文件stm32f10x_gpio.h中对I/O口模式使用枚举定义模式:typedef enum{
    发表于 02-28 06:54

    概述STM32GPIO的8工作模式

    概述STM32GPIO的8工作模式
    发表于 07-06 17:35 26次下载
    概述<b class='flag-5'>STM32</b>中<b class='flag-5'>GPIO</b>的8<b class='flag-5'>种</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    ST MCU_GPIO工作模式详解。

    补充:N、P型的区别,就是一个为正电压启动(NMOS),一个为负电压启动(PMOS)GPIO工作模式详解浮空输入_IN_FLOATIN
    发表于 10-28 20:51 13次下载
    ST MCU_<b class='flag-5'>GPIO</b>的<b class='flag-5'>八</b><b class='flag-5'>种</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>详解。

    STM32CubeMX-GPIO工作模式

    STM32IO口的工作模式:1)、GPIO_Mode_IN_FLOATING:浮空输入2)、
    发表于 11-25 13:36 10次下载
    <b class='flag-5'>STM32CubeMX-GPIO</b>的<b class='flag-5'>八</b><b class='flag-5'>种</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    STM32STM32F4 GPIO模式工作原理详解

    STM32STM32F4 GPIO模式工作
    发表于 11-26 17:06 11次下载
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b>F4 <b class='flag-5'>GPIO</b><b class='flag-5'>八</b><b class='flag-5'>种</b><b class='flag-5'>模式</b>及<b class='flag-5'>工作</b>原理详解

    STM32的8GPIO输入输出模式

    STM32的8GPIO输入输出模式参考文章“STM32的8
    发表于 11-26 17:06 16次下载
    <b class='flag-5'>STM32</b>的8<b class='flag-5'>种</b><b class='flag-5'>GPIO</b>输入输出<b class='flag-5'>模式</b>

    GPIO的8工作模式详细介绍!

    我们在用STM32这颗MCU的时候,用的最多的也是最基础的应该就是GPIO外设了,而在STM32的HAL库中GPIO有8
    发表于 11-30 13:36 9次下载
    <b class='flag-5'>GPIO</b>的8<b class='flag-5'>种</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>详细介绍!

    STM32STM32F4 GPIO模式工作原理详解

    STM32STM32F4 GPIO模式工作
    发表于 12-04 14:51 9次下载
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b>F4 <b class='flag-5'>GPIO</b><b class='flag-5'>八</b><b class='flag-5'>种</b><b class='flag-5'>模式</b>及<b class='flag-5'>工作</b>原理详解

    HAL库的GPIO工作模式

    众所周知,STM32GPIO工作模式,但是打开HAL库发现,有12中可以供自己设置。先
    发表于 12-05 13:06 8次下载
    HAL库的<b class='flag-5'>GPIO</b><b class='flag-5'>八</b><b class='flag-5'>种</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    GPIO工作模式

    GPIO是通用输入/输出端口的简称,GPIO的引脚与外部设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。GPIO的8输入模式
    的头像 发表于 07-02 16:38 9484次阅读
    <b class='flag-5'>GPIO</b>的<b class='flag-5'>八</b><b class='flag-5'>种</b><b class='flag-5'>工作</b><b class='flag-5'>模式</b>

    STM32的8GPIO模式理解

    最近在看数据手册的时候,发现STM32GPIO输入输出模式的配置种类有8之多
    的头像 发表于 08-04 14:53 898次阅读

    STM32 GPIO模式工作原理详解

    围设备(像控制led亮灭,按键控制,软件模拟IIC等)直观又简单的控制。 GPIO的8模式  1. 输入模式:   (1)上拉输入模式
    的头像 发表于 07-22 09:32 4742次阅读
    <b class='flag-5'>STM32</b> <b class='flag-5'>GPIO</b><b class='flag-5'>八</b><b class='flag-5'>种</b><b class='flag-5'>模式</b>及<b class='flag-5'>工作</b>原理详解