1、GPIO的全称是General-purpose input/output,意为通用输入/输出接口,PIN脚依现实考量可选择通用输入模式(GPI)通用输出模式(GPO)以及通用输入输出模式(GPIO),在STM32中,GPIO的工作模式被细分为8种,由4个32位寄存器共同控制。

2、GPIO端口的硬件结构框图如下图所示:

需要注意的是:在下文中并不会对GPIO各个工作模式电路的工作原理进行详细解析,而是着重分析各个模式的特点和在不同场合下的具体应用。

3、GPIO的结构决定了GPIO可以被配置成以下模式:

    typedef enum     {      GPIO_Mode_AIN = 0x0, //  模拟输入          GPIO_Mode_IN_FLOATING  = 0x04, // 浮空输入          GPIO_Mode_IPD  = 0x28, // 下拉输入         GPIO_Mode_IPU  = 0x48, // 上拉输入          GPIO_Mode_Out_OD  = 0x14, // 开漏输出          GPIO_Mode_Out_PP  = 0x10, // 推挽输出          GPIO_Mode_AF_OD  = 0x1C, // 复用开漏输出         GPIO_Mode_AF_PP = 0x18 // 复用推挽输出        } GPIOMode_TypeDef;

4、4种输入模式

  • 浮空输入模式:数据通道中仅接入TTL触发器(作用是将相对缓慢变化的模拟信号变成矩形信号)整形,随后输入输入数据寄存器,该种工作模式未接入任何上拉/下拉电阻。 模式特点:在该引脚悬空(无信号输入)的情况下,读取该端口的电平是不确定的。 适用场合:外部按键输入/USART RX引脚。
  • 上拉输入模式:与浮空输入模式相比,仅仅是在数据通道前端接入了一个上拉电阻,其余无变化。 模式特点:在无信号输入时端口电位受上拉电阻钳制,I/O端口输入电平始终保持为高电平;而当端口输入电平为低电平时,I/O端口输入电平为低电平。 适用场合:需要IO内部上拉电阻输入时,器件的外部中断(IRQ)引脚触发中断条件为下降沿触发/低电平触发,这样在无信号输入时始终保持高电平,如果有事件触发中断IRQ可以输出一个低电平,进而可产生(下降沿/低电平)中断。例如单片无线收发器芯片NRF24L01的IRQ引脚的工作模式即为上拉输入模式。
  • 下拉输入模式:与浮空输入模式相比,仅仅是在数据通道前端接入了一个下拉电阻,其余无变化。 模式特点:在无信号输入时端口电位受下拉电阻钳制,I/O端口输入电平始终保持为低电平;而当端口输入电平为高电平时,I/O端口输入电平为高电平。 适用场合:需要IO内部下拉电阻输入时,器件的外部中断(IRQ)引脚触发中断条件为上升沿触发/高电平触发时,该端口可以选择下拉输入模式。
  • 模拟输入模式:数据通道不接入任何处理单元(TTL触发器/钳制电阻),直接输入MCU内部的处理单元。 模式特点:相较于其他输入模式只能读取到逻辑高/低电平(数字量),该模式能读取到细微变化的值(模拟量)。 适用场合:ADC模拟输入/低功耗下省电。

5、4种输出模式

  • 推挽输出:输出具有驱动能力,当CPU输出逻辑’0’时,I/O端口输出低电平,而当CPU输出逻辑’1’时,I/O端口输出高电平,通常作为普通的GPIO用于驱动LED、数码管等电子元器件或输出控制某个信号。
  • 开漏输出:适合做电流型的驱动,其吸收电流能力较强。当CPU输出逻辑’0’时,I/O端口输出低电平,而当CPU输出逻辑’1’时,该引脚处于开漏,也就是浮空状态(高阻态),如果想输出高电平则必须接入上拉电阻。同时IO口可以由外部电路改变为低电平或不变,即可读IO输入电平变化,实现了I/O端口的双向功能;此外,可以将多路开漏输出的引脚连接到一条线上,通过一个上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系,这也是I2C,SMBus,等总线判断总线占用状态的原理。
  • 复用推挽输出:在STM32中,一个引脚通常可作为普通GPIO来使用,但通常有多个复用模块对应着同一个引脚,那么当这个GPIO作为内置外设引脚时,就叫做复用模式。 适用场合:常见片内外设(USART TX引脚/SPI/PWM输出等等)
  • 复用开漏输出:与开漏输出特性一致,只不过引脚选择了复用功能。 适用场合:常见片内外设(I2C/SMBus等等)

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

STM32 GPIO的8种工作模式与应用场合相关推荐

  1. stm32 GPIO的8种工作模式

    上图的最右端为I/O引脚,左端的器件位于芯片内部.I/O并联了两个用于保护的二极管. 注:部分图片内容来自<STM32库开发实战指南>

  2. STM32中GPIO口八种工作模式简介及LED灯测试

    STM32中GPIO口八种工作模式简介及LED灯测试 一.GPIO口八种工作模式 二. LED灯测试 一.GPIO口八种工作模式 在STM32单片机里对于GPIO的配置种类有8种之多,包括4种输入模式 ...

  3. 休眠后gpio状态_STM32中GPIO的8种工作模式总结

    STM32 中 GPIO 的 8 种工作模式总结 一.推挽输出:可以输出高.低电平,连接数字器件 ; 推挽结构一般是指 两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一 个截止.高低 ...

  4. GPIO的八种工作模式

    一.GPIO的八种工作模式 1.上拉输入:IO口在无输入的情况下,保持高电平. 2.下拉输入:IO口在无输入的情况下,保持低电平. 3.浮空输入:浮空输入状态下,IO的电平状态是不确定的,完全由外部输 ...

  5. STM32-深入理解GPIO的8种工作模式

    文章目录 一.GPIO中四个关键器件介绍 1.1.保护二极管 1.2.P-MOS管和N-MOS管 1.3.上拉电阻和下拉电阻 1.4.TTL肖特基触发器 二.GPIO的8种工作模式 2.1.模拟输入 ...

  6. gpio的8种工作模式_Stm32之GPIO工作模式简介

    GPIO的8种工作模式 GPIO初始化结构体的时候,必须要配置合适的工作模式,这样才能使得IO口发挥应有的作用.工作模式大体上共分为输入输出两类,共8种,下面将介绍这8种工作模式. GPIO工作模式 ...

  7. STM32F1XX的GPIO的8种工作模式以及GPIO的寄存器简介

    基础知识 STM32F103ZET6一共有7组IO口,即GPIOA,GPIOB,GPIOC到GPIOG.每组IO口有16个IO,所以一共有112个IO.STM32的大部分引脚除了当GPIO使用外,还可 ...

  8. gpio的8种工作模式_【超低功耗系列一】STM32L 低功耗产品和模式

    大家知道意法半导体STM32产品中有四个系列,其中一个很重要的系列是超低功耗系列,今天我们就来聊一下STM32超低功耗系列产品. 意法半导体的超低功耗系列有非常优秀的低功耗表现,在EEMBC(嵌入式微 ...

  9. GPIO的8种工作模式——基于STM32F767IGT6

    对于STM32来说,GPIO有四种输入模式和四种输出模式,我们可以通过配置IO端口的相关寄存器来实现特定的效果: ps:M3系列只有输入模式有上/下拉,而M4/7系列输入/输出模式均有上/拉电阻: 浮 ...

最新文章

  1. oracle修改表结构的sql命令是什么,sql语句中修改表结构的命令是什么?
  2. 学习CSS了解单位em和px的区别
  3. 手机linux系统指令大全,Linux系统指令大全
  4. Linux命令执行顺序
  5. windows里面的批处理命令不停地处理同一条命令
  6. 树莓派教程 - 1.2 树莓派GPIO库wiringPi 软件PWM
  7. python文件操作笔记
  8. 如何理解互斥锁、条件锁、读写锁以及自旋锁?(转载)
  9. 威富通支付接口用到的操作类(记录下)
  10. 深度学习(三)theano入门学习
  11. 输入时(hour)、分(minute)、秒(second)的一个具体时间,要求打印出它的下一秒出来(一天24小时)。 例如输入的是23时59分59秒,则输出00:00:00
  12. Chrome和Chromium的区别
  13. 2018深信服笔试-抓兔子 DP
  14. 二级c语言培训资料,全国计算机二级考试C语言,培训资料.doc
  15. Python-str2int
  16. android 最新 九宫格,Android开发中怎么显示一个九宫格图片
  17. css html 鼠标手型,鼠标形状,鼠标效果,样式
  18. 将InfoSphere Guardium数据编辑与IBM分类模块集成
  19. 白帽子渗透测试入门资源:参考书、课程、工具、认证
  20. Linux 学习(6)之磁碟分割

热门文章

  1. android自定义弧形,Android 自定义弧形旋转菜单栏——卫星菜单
  2. 用qrcode.js写的生成二维码和下载这个二维码
  3. 单链表逆置C语言编程实现
  4. 还在充会员看电影?教你两招Python神技
  5. python实现sobel_python通过robert、sobel、Laplace算子实现图像边缘提取详解
  6. 超级实用的IP地址处理模块IPY详解
  7. ECCV 2020 论文大盘点-去雾去雨去模糊篇
  8. iOS开发:不可变数组和可变数组的区别分析(NSArray / NSMutableArray)
  9. DMVPN---理论篇-1
  10. python 正则匹配 条件太多怎么办_Python中正则表达式的巧妙使用