找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2385|回复: 0
打印 上一主题 下一主题
收起左侧

STM32F10x之GPIO

[复制链接]
跳转到指定楼层
楼主
ID:113276 发表于 2016-4-10 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、总述

1、STM32F10x共100个引脚,其中80个引脚为GPIO,分为5组,每组16个引脚,剩下的引脚为晶振输入、电源输入等。

2、每组GPIO由7个寄存器配置,分别是端口配置低寄存器(GPIOX_CRL)、端口配置高寄存器(GPIOX_CRH)、端口输入数据寄存器、端口输出数据寄存器、端口位清除寄存器、端口位设置/清除寄存器、端口锁定配置寄存器。

二、GPIO的8种工作模式

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

2、下拉输入(IPD):下拉指输入接低电平,然后接一个下拉电阻,该端口在默认情况下输入为低电平。3、浮空输入(IN_FLOATING):浮空,顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了。浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。引脚电压为不确定值,用于标准的通信协议如串口、I2C的接收端。

4、模拟输入(AIN):不接上、下拉电阻,经由另一线路把电压信号传送到片上外设块,所以使用 ADC外设的时候,必须设置为模拟输入模式
5、推挽输出(OUT_PP):推挽,就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻。应用在输出电平为0 和 3.3 伏的场合

6、开漏输出(OUT_OD):开漏,就等于输出口接了个NPN三极管,并且只接了E,B,而C极是开路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出1的时候,就可以是5V电压,也可以是3.3V电压了,但是不接电阻上拉的时候,这个输出高就不能实现了。

7、复用推挽输出(AF_PP):对于相应的复用模式,则是根据 GPIO 的复用功能来选择的,如 GPIO的引脚用作串口的输出,则使用复用推挽输出模式。片内外设功能(I2C的SCL,SDA)
8、复用开漏输出(AF_OD):如果用在 IC、SMBUS这些需要线与功能的复用场合,就使用复用开漏模式。片内外设功能(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;
四、通常有5种方式使用某个引脚功能,它们的配置方式如下:
1、作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。
2、作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
3、作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
4、作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。

5、作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表