浮空,顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了.  
开漏,就等于输出口接了个NPN三极管,并且只接了e,b. c极 是开路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出1的时候,就可以是5V电压,也可以是3.3V电压了.但是不接电阻上拉的时候,这个输出高就不能实现了.  
推挽,就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻.

(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 复用推挽输出

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。

开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 
开漏形式的电路有以下几个特点: 
1. 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。 
2. 一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。) 
3. OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。 
4. 可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。补充:什么是“线与”?: 
在一个结点(线)上, 连接一个上拉电阻到电源 VCC 或 VDD 和 n 个 NPN 或 NMOS 晶体管的集电极 C 或漏极 D, 这些晶体管的发射极 E 或源极 S 都接到地线上, 只要有一个晶体管饱和, 这个结点(线)就被拉到地线电平上. 因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS),晶体管就会饱和, 所以这些基极或栅极对这个结点(线)的关系是或非 NOR 逻辑. 如果这个结点后面加一个反相器, 就是或 OR 逻辑. 
其实可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。

由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。 
上拉输入/下拉输入/模拟输入:这几个概念很好理解,从字面便能轻易读懂。 
复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用) 
最后总结下使用情况: 
在STM32中选用IO模式 
(1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 
(2)带上拉输入_IPU——IO内部上拉电阻输入 
(3)带下拉输入_IPD—— IO内部下拉电阻输入 
(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电 
(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能 
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的 
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA) 
(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS) 
STM32设置实例: 
(1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0); 
(2)如果是无上拉电阻,IO默认是高电平;需要读取IO的值,可以使用带上拉输入_IPU和浮空输入_IN_FLOATING和开漏输出_OUT_OD;

STM32的I/O口的八种工作模式相关推荐

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

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

  2. STM32的八种工作模式

    一.模式介绍 STM32单片机具有高性能.低成本.低功耗的优点,与它打交道就必须先了解它的几种工作模式,它共有八种IO口模式,分别是:模拟输入.浮空输入.上拉输入.下拉输入.开漏输出.推挽输出.复用开 ...

  3. GPIO口的八种工作状态

    一直对GPIO的工作状态不是很熟悉,导致在设置IO状态时,经常会设置成推挽上拉,或者推挽下拉,开漏上拉等问题,虽然看起来没有影响MCU工作,但感觉这是一种无知的表现. 现在总结下GPIO口的八种工作状 ...

  4. GPIO的八种工作模式

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

  5. ST MCU_GPIO的八种工作模式详解

    GPIO的八种工作模式详解 浮空输入_IN_FLOATING 带上拉输入_IPU 带下拉输入_IPD 模拟输入_AIN 开漏输出_OUT_OD 推挽输出_OUT_PP 开漏复用输出_AF_OD 推挽复 ...

  6. GPIO I/O口——八种工作模式(总结)

    通用模式:4种输入模式,2种输出模式(此时GPIO受CM3内核(即:cpu)控制) 复用模式:2种复用输出模式:推挽式复用功能输出模式.开漏复用功能输出模式(在复用模式下,GPIO受STM32片上外设 ...

  7. stm32IO口八种工作模式详细解析(附原理图)

    目录 工作模式介绍 常用IO口工作模式分析 实际应用 很多小伙伴们在初学stm32时都对stm32的IO口工作模式的原理和配置不了解,所以我整理发表此篇文章作为自己复习和他人参考资料.(注:该文章参考 ...

  8. STM32 IO口的八种模式

    [冉冰的成长日记007] STM32 的 IO 口可以由软件配置成如下 8 种模式: 1.输入浮空 2.输入上拉 3.输入下拉 4.模拟输入 5.开漏输出 6.推挽输出 7.推挽式复用功能 8.开漏复 ...

  9. stm32 IO口的八种输入输出模式

    记录一下stm32 IO口的八种输入输出模式的学习 首先,可以看见stm32的输入输出模式有以上8种 先从简单的开始说吧 上拉输入和下拉输入: 看图: 由上图可见,当IO口设置为上拉输入的时候,IO口 ...

最新文章

  1. Pacbio HiFi技术原理与应用软件实例
  2. java 企业付款_java实现微信企业付款到个人功能
  3. Linux运维系统工程师系列---25
  4. C# WinForm开发系列 - DataGrid/DataGridView
  5. 图嵌入综述 (arxiv 1709.07604) 译文五、六、七
  6. 玩玩机器学习3——TensorFlow基础之Session基本运算、占位符和变量的使用
  7. 60-50-010-API-Kafka producer拦截器(interceptor)
  8. 记测试工具iozone,iometer,bonnie++
  9. 水星怎么设置网速最快_水星无线路由器怎么设置网速限制【设置方法】
  10. java 获取一年内周六周日日期
  11. constructor构造函数(React)
  12. 如何面试3w的java工程师的成功秘籍
  13. 获取Word2vec训练得到的所有词与词向量
  14. 618最强攻略揭秘:成为网易考拉的黑卡会员!
  15. STM32开发笔记47:STM32F4+DP83848以太网通信指南系列(一):知识储备
  16. cinder卷删除不掉解决方法
  17. JavaScript 自执行函数(闭包)
  18. Centos8修改源并更新
  19. 每日记录 8.28 TP(真阳率) NP(假阳率) FP
  20. 随笔0006 个人作业——软件产品评测

热门文章

  1. golang文件操作
  2. Appboy 基于 MongoDB 的数据密集型实践
  3. 【转】Hibernate和IBatis对比
  4. jvm在不同系统中的最大内存空间地址
  5. 1.2 Name That Number
  6. 路由及iptables学习笔记
  7. Microsoft SQL Server 2005 安装程序错误解疑
  8. 【python自动化办公02】word操作-word转pdf
  9. linux 模式表达式,linux正则表达式和扩展表达式
  10. Skaffold:让K8S开发工作变得简单