输入上拉:当IO口作为输入时,比如按键输入,而按键是与地连接,按下时为低电平,则没按下时该IO口应为高电平,上拉即是该IO口通过一个电阻与电源相连,则没按下时为高电平,按下即为低电平。

输入下拉:同理此时按键与电源相连,按下即为高电平,下拉就是该IO口通过一个电阻与地相连,没按下为低电平,按下为高电平。

    推挽输出:作为普通的IO口输出高低电平

  STM32的输入输出管脚有下面8种可能的配置:(4输入、2输出、2复用输出)

    1、浮空输入_IN_FLOATING

    2、带上拉输入_IPU

    3、带下拉输入_IPD

    4、模拟输入_AIN

    5、开漏输出_OUT_OD

    6、推挽输出_OUT_PP

    7、复用功能的推挽输出_AF_PP

    8、复用功能的开漏输出_AF_OD

上拉:输入高电平,然后接一个上拉电阻(起保护作用),上拉就表示该端口在默认情况下输入为高电平;

浮空:就相当于此端口在默认情况下什么都不接,呈高阻态;

开漏输出:就是不输出电压,低电平时接地,高电平时不接地。如果外接上拉电阻,则在输出高电平时电压会拉到上拉电阻的电压电压。这种方式适合在连接的外设电压比单片机电压低的时候;

推挽输出:就是单片机引脚可以直接输出高电平电压,低电平时接地,高电平时输出单片机电源电压。这种方式可以不接上上拉电阻。但如果输出端可以会接地的话,这个时候输出高电平可能引发单片机运行不稳定,甚至可能烧坏引脚;

  在stm32中如何配置片内外设使用的IO端口:

    首先:

      1、配置输入的时钟和初始化后即被激活(开启);

      2、如果使用该外设的输入输出管脚,则需要配置相应的GPIO端口(否则该外设对应的输入输出可以做普通GPIO管脚使用)

      3、再对外设进行详细设置。

      对应到外设的输入输出功能有下面三种情况:

        1、外设对应的管脚为输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能的开漏输出;

        2、外设对应的管脚为输入:则根据外围电路的配置可以选择浮空输入、带上拉输入或带下拉输入;

        3、ADC对应的管脚:配置管脚为模拟输入;

  如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接,将管脚配置成输出功能后,如果外设没有被激活,那么它的输出将不确定;

STM32的GPIO输出模式就分为普通推挽输出(GPIO_Mode_Out_PP )、普通开漏输出 (GPIO_Mode_Out_OD)及复用推挽输出(GPIO_Mode_AF_PP )、复用开漏输出(GPIO_Mode_AF_OD )。 
  普通推挽输出模式一般应用在输出电平为 0和3.3伏的场合。
  而普通开漏输出一般应用在电平不匹配的场合,如需要输出 5伏的高电平,就需要在外部接一个上拉电阻,电源为 5伏,把 GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出 5伏的电平。
  对于相应的复用模式,则是根据 GPIO的复用功能来选择的,如 GPIO的引脚用作串口的输出,则使用复用推挽输出模式。
  如果用在IC、SMBUS这些需要线与功能的复用场合,就使用复用开漏模式。
  其它不同的复用场合的复用模式引脚配置将在具体的例子中讲解。 在使用任何一种开漏模式,都需要接上拉电阻;
从它的结构我们就可以理解,
  若 GPIO引脚配置为上拉输入模式,在默认状态下(GPIO引脚无输入),读取得的 GPIO引脚数据为 1,高电平。
          而下拉模式则相反,在默认状态下其引脚数据为 0,低电平。  
  而 STM32的浮空输入模式(GPIO_Mode_IN_FLOATING)在芯片内部既没有接上拉,也没有接下拉电阻,经由触发器输入。配置成这个模式直接用电压表测量其引脚电压为 1点几伏,这是个不确定值。由于其输入阻抗较大,一般把这种模式用于标准的通讯协议如 I2C、USART的接收端。
  模拟输入模式(GPIO_Mode_AIN )则关闭了施密特触发器,不接上、下拉电阻,经由另一线路把电压信号传送到片上外设模块。如传送至给 ADC模块,由ADC采集电压信号。所以使用ADC外设的时候,必须设置为模拟输入模式。 
 
  

上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平。而在信号输入为低电平是输入端的电平应该也为低电平。如果没有上拉电阻,在没有外界输入的情况下输入端是悬空的,它的电平是未知的无法保证的,上拉电阻就是为了保证无信号输入时输入端的电平为高电平,同样还有下拉电阻它是为了保证无信号输入时输入端的电平为低电平。

这是上拉电阻和下拉电阻的作用!所以你在这里设置时!是没有多大的区别的!

八种模式:

(1)GPIO_Mode_AIN 模拟输入   //一般用在ADC上
(2)GPIO_Mode_IN_FLOATING 浮空输入     //高低电平不确定,一般用在数据传输,读取电平高低
(3)GPIO_Mode_IPD 下拉输入   //默认低电平,接下拉电阻
(4)GPIO_Mode_IPU 上拉输入   //默认高电平,接上拉电阻
(5)GPIO_Mode_Out_OD 开漏输出    //若接上拉电阻,为高电平,否则为低电平。吸电流能力强。实现IIC的线与,还可以通过改变上拉电阻改变输出电平。
(6)GPIO_Mode_Out_PP 推挽输出    //可输出高低电平
(7)GPIO_Mode_AF_OD 复用开漏输出    //可开启第二功能的开漏
(8)GPIO_Mode_AF_PP 复用推挽输出    //可开启第二功能的推

 

stm32之GPIO(二)的更多相关文章

  1. STM32的GPIO口的输出开漏输出和推挽输出

    本文来自cairang45的博客,讲述了STM32的GPIO口的输出开漏输出和推挽输出, 作者博客:http://blog.ednchina.com/cairang45 本文来自: 高校自动化网(Ww ...

  2. stm32定时器学习二——PWM设置

    /* STM32 嵌入式学习入门(5)——PWM的实现 上一篇博文介绍了定时器和PWM的基本的原理,本篇博文从代码层面来介绍PWM的具体实现.同样,还是以博主所用的开发板——正点原子开发板STM32F ...

  3. STM32学习笔记(二) 基于STM32-GPIO的流水灯实现

    学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...

  4. STM32的GPIO使用的函数剖析

    转载http://blog.csdn.net/wuwuhuizheyisheng/article/details/8239599 STM32的GPIO总结 作者:JCY 该文是自己学习了一段STM32 ...

  5. Stm32高级定时器(二)

    Stm32高级定时器(二) 1 主从模式:主?从? 谈论主从,可知至少有两个以上的触发或者驱动信号,stm32内部有多个定时器,可以相互之间驱动或者控制. 主模式:定时器使能只受驱动时钟控制或者输出控 ...

  6. STM32配置GPIO前须先打开其时钟,否则配置失败

    @2018-5-9 17:11:38 STM32配置GPIO前须先打开其时钟,否则配置失败

  7. STM32 F4 GPIO Modes

    STM32 F4 GPIO Modes Goal: creating a visual summary of GPIO configuration modes. The summary at the ...

  8. STM32的GPIO工作原理 | 附电路图详细分析

    STM32的GPIO介绍 STM32引脚说明 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚.GPIO的引脚与外部硬件设备连接,可实现与外部通讯.控制外部硬件或者采集外部硬件数据的功能. ...

  9. 【转载】stm32的GPIO八种工作模式

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数 ...

随机推荐

  1. C++类包含问题(重复包含和相互包含)

    一.重复包含头文件 头文件重复包含,可能会导致的错误包括:变量重定义,类型重定义及其他一些莫名其妙的错误.C++提供两种解决方案,分别是#ifndef和#pragma once #ifndef _SO ...

  2. 青蛙跳台阶问题——剑指offer

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,求该青蛙跳上一个n级台阶总共有多少中跳法. http://www.nowcoder.com/books/coding-interviews?pa ...

  3. BZOJ 1208: [HNOI2004]宠物收养所(BST)

    本来想先用set写一遍,再自己写个splay或treap,不过用set过了之后就懒得去写了....以后有空再来写吧..(不会有空的吧= = ------------------------------ ...

  4. .net format 中 大括号{}处理

    1.string string.format(string format,object arg0) 错误:因为方法中使用{n}做占位符号了,所以其他需要括号{}的地方,就需要{{}}

  5. (Problem 70)Totient permutation

    Euler's Totient function, φ(n) [sometimes called the phi function], is used to determine the number ...

  6. oracle整体知识的大致介绍(1)-概念

    表空间: oracle允许不同类型的数据分开存放,表空间是数据库的逻辑划分. 数据文件: 表空间由同一磁盘上的一个或多个文件组成,这些文件叫做数据文件. 实例: 是存放和控制数据库的软件机制. ora ...

  7. Oracle笔记(十三) 视图、同义词、索引

    一.视图 在之前所学习过的所有的SQL语法之中,查询操作是最麻烦的,如果程序开发人员将大量的精力都浪费在查询的编写上,则肯定影响代码的工作进度,所以 一个好的数据库设计人员,除了根据业务的操作设计出数 ...

  8. Boyer–Moore (BM)字符串搜索算法

    在计算机科学里,Boyer-Moore字符串搜索算法是一种非常高效的字符串搜索算法.它由Bob Boyer和J Strother Moore设计于1977年.此算法仅对搜索目标字符串(关键字)进行预处 ...

  9. 为什么每个程序员都应该用Mac OS X?

    1.Mac OS X 是基于 Unix 的.这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到.如果你是个 windows 开发人员,我想你会在 ...

  10. Jedis中的一致性hash

    Jedis中的一致性hash 本文仅供大家参考,不保证正确性,有问题请及时指出 一致性hash就不多说了,网上有很多说的很好的文章,这里说说Jedis中的Shard是如何使用一致性hash的,也为大家 ...