查看: 1141|回复: 0

学习stm32的基础——掌握IO口

[复制链接]

该用户从未签到

发表于 2016-3-11 10:33:57 | 显示全部楼层 |阅读模式
分享到:
学stm32的过程中,掌握IO口是很重要的基础。这篇博文简单介绍一下stm32的IO口。
        一、IO口的基本操作
        (1)IO口模式:
        GPIO_Mode_IN输入模式,输入3.3V或0V 的高低电平。例如按键程序就是配置称输入模式
        GPIO_Mode_OUT输出模式,输出3.3V或0V 的高低电平。例如LED闪烁程序配置成输出模式。
        GPIO_Mode_AF 复用工作模式。例如I2C,SPI,USART。GPIO就必须配成AF模式。
        GPIO_Mode_AN 模拟输入模式。例如ADC程序必须配置成AN模拟量输入模式。
        (2)当配置成输出模式或者AF模式时,输出类型有两种:
        GPIO_OType_PP 推挽输出,即可输出高电平,也可以输出低电平。
        GPIO_Otype_OD开漏输出,只能输出低电平。
        (3)无论是输入还是输出,都可以配置上下拉类型:
        GPIO_PuPd_NOPULL 不上下拉
        GPIO_PuPd_UP 上拉模式
        GPIO_PuPd_DOWN 下拉模式
        (4)下面具体看下什么是推挽输出,什么是开漏输出,以及它们的特点。
        推挽输出GPIO_OType_PP 特点:
        既可输出高电平,也可以输出低电平。如下图:

        当我们将GPIO配置成低电平的,Q1截止,Q2导通,S2输出低电平;
        当我们将GPIO配置成高电平的,Q1导通,Q2截止,S2输出高电平;
        其实黑色区域是在单片机的内部,因此它的电流是单片机的电流,所以说它驱动能力是较弱的。
        (5)开漏输出GPIO_OType_PP的特点:只能输出低电平,不能输出高电平。
        其优点在于:大电流驱动能力;电平匹配;可以实现“线与”功能。
        逻辑框图如下:

        当往IO写0时:S1为低电平,Q1截止,因此Q2的基极就是VCC为高,Q2导通,S2输出被拉到GND,因此输出低电平。
        当往IO写1 时,S2为高电平,Q1导通,因此Q2的基极被拉到GND为低,Q2截止,S2输出是不确定的。
        因此开漏输出只能输出低电平。S2直接从Q2的集电极引出,所以呀开漏输出也成为集电极开漏输出。
        其实你也可以开漏输出高电平的。那么如何让开漏输出输高电平呢?其实很简单。(这个过渡段好苍白。。。)

        只要在开漏的输出加上一个上拉电阻,就可以输出高电平了(VCC1是单片机内部电源,VCC2是外部电源),流过R3的电流是由外部电源提供,所以说这种电流可以提供较大的电流。
        例如:VCC1是3.3V(开发板),VCC2是5v时S2就可以输出OV和5V,从而实现了电平转换。也就是说开漏输出有电平转换的功能。
        开漏输出的应用:线与功能

        只有当S1,S3,S5输入全为高电平时输出才是高电平,当S1,S3,S5,中有任意一个为低电平是输出就为低电平。这就是所谓的线与功能。
        例如I2C总线各器件的SDA和SCL都是线“与”关系。
        (6)IO口上下拉作用:
        将不确定的信号通过一个电阻,嵌位在确定电平;
        为开漏型电路输出电流通道;
        在一定程度上提高系统的抗干扰;
        例如串口RS485电路的方向控制。RS485电路是半双工的收发不能同时进行。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-30 00:13 , Processed in 0.116101 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.