IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> (STM32笔记)七、GPIO基础知识 -> 正文阅读

[嵌入式](STM32笔记)七、GPIO基础知识

我用的是正点的STM32F767来进行学习。之后的这个系列笔记开头未标明的话,用的也是这个板子。

GPIO的控制部分还未完成,理解这一部分对于我这个小菜鸡属实吃力不少

七、GPIO基础知识

1、GPIO介绍

GPIO(全称:General Purpose Input Output(通用输入输出端口))是一款端口扩展器,可以做输入也可以做输出。GPIO端口可通过程序配置成输入或者输出。

GPIO具有低功耗、小封装、低成本、布线简单等优点。

STM32的引脚中,有部分是做GPIO使用,部分是电源引脚/复位引脚/启动模式引脚/晶振引脚/调试下载引脚

2、GPIO八种工作模式解释(STM32

本小节图片引用自【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

Cortex-M3里,对于GPIO的配置种类有8种:

  1. GPIO_Mode_AIN 模拟输入
  2. GPIO_Mode_IN_FLOAtiNG 浮空输入
  3. GPIO_Mode_IPD 下拉输入
  4. GPIO_Mode_IPU 上拉输入
  5. GPIO_Mode_Out_OD开漏输出
  6. GPIO_Mode_Out_PP 推挽输出
  7. GPIO_Mode_AF_OD 复用开漏输出
  8. GPIO_Mode_AF_PP 复用推挽输出
    在这里插入图片描述

1)4种输入模式

(1)浮空输入

  1. GPIO_Mode_IN_FLOATING
  2. 作用:
    当输入一个高电平时,会检测到高电平;
    当输入低电平时,会检测到低电平;
    当无信号输入时,该端口的电平是不确定的。
  3. 原理:
    浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器
    当引脚悬空(在无信号输入)的情况下,I/O的电平状态是不确定的,会因为各种各样的情况受到干扰。
    在这里插入图片描述
  4. 参考资料:
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    GPIO工作模式

(2)上拉输入

  1. GPIO_Mode_IPU
  2. 作用:
    当输入一个高电平时,会检测到高电平;
    当输入低电平时,会检测到低电平;
    当无信号输入时,会检测到高电平。
  3. 原理:
    上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器
    当输入一个高电平时,VDD不产生影响;
    当输入低电平时,上拉电阻压降为VDDVDD不产生影响;
    当无信号输入时,由于上拉电阻电流很小,所以降压很低,故会检测到高电平。
    在这里插入图片描述
  4. 参考资料:
    视频12分50秒
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    GPIO工作模式

(3)下拉输入

  1. GPIO_Mode_IPD
  2. 作用:
    当输入一个高电平时,会检测到高电平;
    当输入低电平时,会检测到低电平;
    当无信号输入时,会检测到低电平。
  3. 原理:
    下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器
    当输入一个高电平时,下拉电阻电流很小,VSS不产生影响;
    当输入低电平时,VSS不产生影响;
    当无信号输入时,下拉电阻两端皆为低电平,故会检测到低电平。
    在这里插入图片描述
  4. 参考资料:
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)
    GPIO工作模式

(4)模拟输入

  1. GPIO_Mode_AIN
  2. 作用:
    将不会检测到电平信息,会检测到完整的电压变化。
  3. 原理:
    模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到外设模块,比如ADC模块等等。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

2)4种输出模式(带上下拉)

(1)开漏输出(带上拉或者下拉)

  1. GPIO_Mode_Out_OD
  2. 作用:
    当设置输出为高电平时,端口输出高低电平由端口外的上拉或下拉决定。
    当设置输出为低电平时,端口输出低电平。
    当输出低电平以后,端口可以进行输入。
  3. 原理:
    当设置输出为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;
    当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。
    同时,I/O端口的电平也可以通过输入电路进行读取;
    注意,I/O端口的电平不一定是输出的电平,电平由上拉电阻控制。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

(2)复用开漏输出(带上拉或者下拉)

  1. GPIO_Mode_AF_OD
  2. 作用:
    当外设输出为高电平时,端口输出高低电平由端口外的上拉或下拉决定。
    当外设输出为低电平时,端口输出低电平。
    当输出低电平以后,端口可以进行输入。
  3. 原理:
    与开漏输出相同,只不过由外设控制高低电平。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

(3)推挽式输出(带上拉或者下拉)

  1. GPIO_Mode_Out_PP
  2. 作用:
    当设置输出为高电平时,端口输出高电平。
    当设置输出为低电平时,端口输出低电平。
    当输出低电平以后,端口可以进行输入。
  3. 原理:
    当设置输出为高电平的时候,P-MOS管处于开启状态,N-MOS管处于关闭状态,此时I/O端口的高电平由P-MOS管的VDD决定;
    当设置输出的值为低电平的时候,N-MOS管处于开启状态,P-MOS管处于关闭状态,此时I/O端口的电平就是低电平。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

(4)复用推挽输出(带上拉或者下拉)

  1. GPIO_Mode_AF_PP
  2. 作用:
    当外设输出为高电平时,端口输出高电平。
    当外设输出为低电平时,端口输出低电平。
    当输出低电平以后,端口可以进行输入。
  3. 原理:
    与推挽输出相同,只不过由外设控制高低电平。
    在这里插入图片描述
  4. 参考资料:
    GPIO工作模式
    【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

3)八种工作模式的区别

(1)什么是推挽结构和推挽电路?

推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。
推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。

(2)开漏输出和推挽输出的区别?

开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内);
推挽输出:可以输出强高、低电平,连接数字器件。
关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:
在这里插入图片描述
该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。右边的则可以理解为开漏输出形式,需要接上拉。

(3)在STM32中选用怎样选择I/O模式?

  1. 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1
  2. 带上拉输入_IPU——IO内部上拉电阻输入
  3. 带下拉输入_IPD—— IO内部下拉电阻输入
  4. 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电
  5. 开漏输出_OUT_OD——IO输出0接GNDIO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51 \ STM32IO双向功能
  6. 推挽输出_OUT_PP——IO输出0接GNDIO输出1接VCC,读输入值是未知的
  7. 复用功能的推挽输出_AF_PP ——片内外设功能(I2CSCLSDA
  8. 复用功能的开漏输出_AF_OD——片内外设功能(TX1MOSIMISO.SCK.SS

(4)STM32 设置实例:

  1. 模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出 0 和 1;读值时先GPIO_SetBits(GPIOBGPIO_Pin_0)拉高,然后可以读IO的值,使用GPIO_ReadInputDataBit(GPIOBGPIO_Pin_0);
  2. 如果是无上拉电阻,IO 默认是高电平;
  3. 需要读取IO的值,可以使用带上拉输入_IPU和浮空输入_IN_FLOATING 和开漏输出_OUT_OD

4)IO 端口复用功能配置:

  1. 对于复用功能输入,端口可以配置成任意输入模式或者复用功能输出模式。
  2. 对于复用功能输出,端口必须配置成复用功能输出
  3. 对于双向复用功能,端口必须配置成复用功能输出
  4. stm32 的部分 IO 端口的复用功能可以重新映射成另外的复用功能。
  5. stm32 具有 GPIO 锁定机制,即锁定 GPIO 配置,下次复位前不能再修改。
  6. LSE 振荡器关闭时,OSC32_INOSC32_OUT 可以用作通用 IO PC14PC15
  7. 当进入待机模式或者备份域由 Vbat 供电,PC14PC15 功能丢失,该两个 IO 口线设置为模拟输入功能。
  8. OSC_INOSC_OUT 可以重新映射为 GPIO PD0PD1
  9. 注意 PD0PD1 用于输出地时候仅能用于 50MHz 输出模式。
  10. 注意:PC13PC14PC15 只能用于 2MHz 的输出模式,最多只能带 30pf 的负载,并且同时只能使用一个引脚!!!

5)上电复位后IO口状态

上电复位后,GPIO默认为输入浮空状态,部分特殊功能引脚为特定状态。

复位后,调试引脚处于复用功能上拉/下拉状态:

  • PA15JTDI处于上拉状态
  • PA14JTCK/SWCLK处于下拉状态
  • PA13JTMS/SWDAT处于下拉状态
  • PB4NJTRST处于上拉状态
  • PB3JTDO处于浮空状态

3、开发板芯片的引脚常用参数

注:由于我使用的是STM32F767,所以本小节分析STM32F767IGT6的参数

在这里插入图片描述
在这里插入图片描述

  1. 引脚数量:176 / 4个方向
  2. 主频:180 MHz
  3. 内核:ARM Cortex-M7
  4. Flash:1024 KB
  5. 封装:LQFP176
  6. 通用IO数量:132
  7. 最低工作电压:1.7 V
  8. 最高工作电压:3.6 V
  9. 一共9组IO:PA ~ PI
    PA~ PH每组16个IO(Pa0 ~ Pa15),PI只有12个IO(PI0 ~ PI11
    共140个IO口。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:14:35  更:2021-08-14 14:14:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:04:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计