目录

GPIO概述

GPIO功能及特性

GPIO的电路结构

GPIO的工作模式


GPIO概述

GPIO是通用输入输出接口(general purpose input/output)的简称主要用于数字量的输入和输出,是微控制器中使用频率最高的外设。它包括以下功能:

1、输出功能:输出高/低电平

通过输出高/低电平,控制继电器、指示灯和蜂鸣器等外围设备。

2、输入功能:读取引脚电平状态

通过读取引脚的电平状态:高电平或低电平,获取按键和各类传感器的信息输入。

3、复用功能

作为片内外设的对外接口。例如,作为串口通信的数据接收引脚和发送引脚。

4、时序模拟

通过改变引脚的高/低电平,模拟各种时序信号,如I2C和 SPI等。

GPIO功能及特性

对于STM32微控制器而言,其GPIO外设具备以下的特性:

1、多种工作模式

提供4种工作模式:输入模式、输出模式、模拟模式和复用模式。

2、灵活复用

STM32微控制器内部集成了很多外设,这些外设的对外引脚都是与GPIO引脚复用通过寄存器的配置,可以选择引脚实现GPIO功能还是外设功能。

3、5V电压容限

大部分引脚具备 5V电压容限,可以接受5V电压的输入,方便与5V供电的外围电路连接。具备 5V 电压容限的引脚信息可以通过查阅芯片的数据手册获取。

4、外部中断

每一个 GPIO引脚都具备外部中断能力。

在学习STM32 微控制器的GPIO外设时要注意两个重要的概念:端口和引脚。

1、端口(PORT)

STM32微控制器将GPIO分成了很多个组,每一组称为端口,如GPIOA、GPIOB和GPIOH等。每一组端口可以看成独立的子模块,包括多个引脚,通过多个硬件寄存器(端口寄存器组)来控制引脚的工作模式。

2、引脚(PIN)

引脚对应微控制器的一个管脚,归属于端口,每一组端口最多包含 16个引脚。例如端口GPIOA对应的16个引脚为PA0~PA15,其中PA0表示该端口的第0个引脚也对应STM32F411芯片的第14个管脚。引脚的工作模式由端口寄存器组的对应位控制。

从上面的描述可以看出:端口相当于一个独立的外设子模块,由多个寄存器构成;而引脚则对应微控制器的一个管脚。一个端口可以控制多个引脚,通过对端口寄存器组的配置来设定引脚的工作模式。

GPIO的电路结构

STM32F4微控制器的GPIO电路结构如图所示。

整个电路结构由三部分组成:

1、端口寄存器组

图的左边是控制GPIO端口的寄存器组,用于设置该组端口所含引脚的工作模式。这里只展示了三个寄存器:置位/复位寄存器、输出数据寄存器和输入数据寄存器用户通过设置这三个寄存器的内容,并结合驱动电路,就可以在该端口指定的引脚上输出高/低电平或者读取指定引脚的电平状态。

2、输入/输出驱动器

图的中间是输入/输出驱动器。驱动器中包含的门电路、MOS管和触发器等电路元件,可以将输出数据寄存器中的0或1数据转换为引脚上的低电平或高电平,或者将引脚的电平状态转换为输入数据寄存器中的0或1数据。

a.输入驱动器

输入驱动器的主要电路元件是施密特触发器,其电路原理是当输入电压高于正向阈值电压时,输出为高;当输入电压低于负向阈值电压时,输出为低。引脚上的模拟电压经过施密特触发器后,将转换为0或1的数字信号,并存入到输入数据寄存器。

b.输出驱动器

输出驱动器的主要电路元件是一对P-MOS管和N-MOS管两个MOS管的导通和截止由输出数据寄存器控制。根据两个 MOS 管的导通和截止状态,使得引脚具有“推挽输出”和“开漏输出”两种输出类型。

3、引脚电路

图的右边是引脚电路。引脚电路由两组电路元件组成:

(1)保护二极管

保护二极管用于防止外部过高或过低的电压输人芯片。当引脚电压高于 VDDT5 V电压容限)时,上方的二极管导通,将输人电压限制在“VDD_FT+Ud”(Ud表示二极管导通电压);当引脚电压低于VSS时,下方的二极管导通,将输人电压限制在“VSS- Ud”。保护二极管限制了输入电压的范围,防止了不正常电压输入芯片而导致的芯片损坏。

(2)上拉/下拉电阻

上拉/下拉电阻用于设置引脚的默认电压。上拉电阻连接在引脚和电源VDD之间下拉电阻连接在引脚与地VSS之间。上拉/下拉电阻的使能通过寄存器控制:当上拉电阻使能时,引脚的默认电压为高电平;当下拉电阻使能时,引脚的默认电压为低电平。

GPIO的工作模式

根据GPIO的电路结构引脚可以分为四种工作模式:

1、输入模式

当我们需要读取引脚的电平状态时,常常使用输入模式。此时,输出驱动器被禁用施密特触发器打开,引脚的电平状态经过施密特触发器转换后,送入到输入数据寄存器对输入数据寄存器的读操作可以获取引脚的电平状态。

根据是否开启上拉/下拉电阻,又可以分成 3 种输入模式:

(1)浮空输入

不使能上拉/下拉电阻。此时,I/O引脚的电平状态不确定,完全由外部输入决定MCU上电复位后,引脚默认的工作模式就是浮空输入。

(2)上拉输入

使能上拉电阻, I/O引脚内部接上拉电阻。如果引脚外部没有信号输入时,默认为高电平。

(3)下拉输入

使能下拉电阻, I/O引脚内部接下拉电阻。如果引脚外部没有信号输入时,默认为低电平。

输入模式下的上拉/下拉电阻在设计电路时比较有用。以按键电路为例,如果按电路自身设计了上拉或下拉电阻,则引脚可以选择工作在浮空输入模式下。如果按键电路自身没有设计上拉或下拉电阻,则可以根据按键电路的设计,使能引脚的上拉/下拉电阻。这样可以减少按键电路的上拉或下拉电阻,起到简化电路的作用。

2、输出模式

当我们需要使用引脚作为数字输出时,常常使用输出模式。此时,输出驱动器启用并配置为推挽类型或开漏类型,施密特触发器打开,可以读取引脚的电平状态。

根据 MOS 管的工作状态,又可以分成两种输出模式:

(1)推挽输出

P-MOS管和N-MOS管轮流工作,可以输出高电平或低电平。当输出数据寄存器的某一位为1时,经过非门后,P-MOS管处于导通状态,N-MOS管处于截止状态,对应的I/O引脚将输出高电平;当输出数据寄存器的某一位为0时,经过非门后,P-MOS管处于截止状态,N-MOS 管处于导通状态,对应的I/O引脚输出低电平。

(2)开漏输出

P-MOS 管一直处于截止状态,只有N-MOS 工作,只能输出低电平。如果输出数据寄存器某一位为0时,N-MOS 管处于导通状态,对应的I/O引脚将输出低电平。如果输出数据寄存器某一位为1时,N-MOS 管处于截止状态。此时,对应I/O引脚的输出电平就不再由输出数据寄存器决定,而是由 I/O引脚外部的上拉或下拉电阻决定。如果没有外部的上拉或下拉电阻,引脚将处于悬空状态。

在输出模式中,推挽输出是最常用的模式,用于指示灯、蜂鸣器、继电器及电机等外用电路的控制。开漏输出则一般用于I2C总线(开漏模式加上拉电阻以实现双向数据通信或者作为电平转换(3.3 V 电压与 5V 电压之间的转换 )。

3、模拟模式

模拟模式主要用于片内模拟外设(A/D、D/A、模拟比较器等)的信号通道。当引脚工作于模拟模式时,施密特触发器被旁路,输出驱动器关闭,上拉/下拉电阻禁能,输入数据寄存器的值恒为0。此时,I/O引脚的功耗较小。因此在工程应用中,常常将没有用到的I/O引脚设置为模拟模式,以减少系统功耗,提高抗干扰能力。

4、复用模式

GPIO引脚的基本功能是数字I/O,而STM32 微控制器片内集成了大量的外设如TIMER 和 UART 等,这些片内外设的外部引脚与 GPIO引脚复用。在复用模式下,引脚的电平状态不再受端口寄存器组的控制,而是由片内外设控制。此时,输出驱动器启用,可以配置为推挽类型或开漏类型;施密特触发器打开,可以读取引脚的电平状态。

片内外设通过多路复用器与GPIO引脚互连,用户可以通过修改多路复用器,重新分配片内外设所映射的I/O引脚。引脚所对应的片内外设复用功能,可以通过查阅芯片的数据手册获取,或者在 CubeMX 软件的引脚分配图中点击对应引脚,在弹出的菜单中将列出该引脚的全部复用功能。

【STM32】GPIO详细介绍相关推荐

  1. stm32 GPIO简单介绍及初始化配置(库函数)

    前言: 相信,大部分查找GPIO的人,都是刚刚接触STM32的人,而刚接触STM32的人,大部分是从51上来的人,所以我会由浅入深,从51和STM32的区别入手,通过对比这两个处理器的配置方法,来跟大 ...

  2. 树莓派 GPIO详细介绍与使用

    树莓派 介绍 Raspberry Pi(中文名为"树莓派",简写为RPi,(或者RasPi / RPI) [1] 是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基 ...

  3. 使用JLink烧录STM32程序详细介绍

    1步:在电脑->管理->设备管理器,查看JLink是否被电脑识别,没有则需要安装驱动,卖家那里会有. 2步,打开keil软件使用任意程序,点击魔术棒   之后保存并应用,至此设置成功.点击 ...

  4. 超声波模块详细介绍(stm32循迹小车中超声波的介绍)

    超声波模块详细介绍(stm32循迹小车中超声波的介绍) 超声波模块是非常重要的一个模块,今天给大家全面介绍一下超声波模块的原理以及用法,代码的编写. 1 超声波模块的认识 首先,市面上的常见超声波模块 ...

  5. 详细介绍如何读懂STM32开发板电路原理图以及芯片文档和开发手册,并编写一个测试程序:点亮一个LED灯

    开发环境: 开发板:STM32PZ6806L芯片:ARM_STM32F103_ZE 软件开发环境:KEIL5 开发所需资料: STM32F1XX芯片电路原理图 STM32F1XX系列芯片手册 XX代表 ...

  6. STM32 HAL库详细介绍

    自从ST公司推出HAL库来替代原有的标准库,HAL库开始慢慢的被广大STM32开发者所接受,现在已经在实际的项目开发中大量使用,HAL库使得项目的移植变得简单容易,但是对于初学者而言,刚开始接触有些晦 ...

  7. 关于STM32 GPIO配置基础概括

    一.词汇表 1.介绍常用词的定义: 缩略词 包含定义 AMR 绝对最大额定值(ABSOLUTE MAXIMUM RATINGS 更多地人称为: ABS) GPIO 通用输入/输出 GP 通用 P 推挽 ...

  8. STM32F103单片机详细介绍

    一.简介 STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列.除了被我们熟知的S ...

  9. 详细介绍Audition输出一个周期2khz的正弦波(循环)。将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。

    详细介绍Audition输出一个周期2khz的正弦波(循环).将一段数字音频歌曲数据转换为模拟音频波形输出(循环) 序 言 1)STM32 的 DAC简介 2)DAC基本原理 2)DAC数字信号格式 ...

最新文章

  1. Spring选择哪种注入方式
  2. 《Artifact》的得与失:成功的游戏工业品,却与主流背道而驰
  3. PHP5各个版本的新功能和新特性总结(转载 http://www.jb51.net/article/48150.htm)
  4. Java IO: Reader And Writer
  5. grad在python什么模块_深度学习(Deep Learning)基础概念1:神经网络基础介绍及一层神经网络的python实现...
  6. aqlserver实用程序_sqlserver命令提示实用工具的介绍
  7. 【STC15库函数上手笔记】5、定时器
  8. python面试设计模式问题_聊聊 Python 面试最常被问到的几种设计模式(下)
  9. mysql 密码文件改成密文_数据库密码弄成密文
  10. 快速接入 Android BLE 开发的基础框架
  11. python实战1.1——根据1.0做词云图
  12. stata导入数据问题
  13. java 可以直接当自定义标示符_JAVA 从头开始二
  14. CF621E Wet Shark and Blocks
  15. Kettle Spoon 安装配置详解
  16. 跨越适配性能那道坎,企鹅电竞Android weex优化
  17. 修改oracle用户资源限制,oracle用户登陆失败次数限制修改
  18. Leetcode-714. 买卖股票的最佳时机含手续费
  19. 什么是V2X?如何通过V2X技术实现5G智慧交通?(一)
  20. oppofindx5pro评测

热门文章

  1. STM32的书由三部分组成:主控,串行总线,外设传感器
  2. pintia浙大习题集7-46 爬动的蠕虫
  3. 第11周 oj 日期妙算星座
  4. 基于ssh羽毛球馆管理系统mysql
  5. JVM---Java内存屏障和JMM
  6. Mac Android 屏幕同步/共享投影工具[Vysor]
  7. Dogecoin官方提醒:有消息称Dogecoin v1.15.0修复v1.14.3中的漏洞,其未指向官网或为恶意软件
  8. Debian 9 安装 NVIDIA显卡驱动
  9. python模拟井字棋
  10. [MobaXterm] Unable to detect graphics environment