GPIO的八种模式以及配置

STM32的GPIO 有8种可能的配置:(4种输入+2种输出+2种复用输出)
(1) 浮空输入 GPIO_Mode_IN_FLOATING
(2) 带上拉输入 GPIO_Mode_IPU
(3) 带下拉输入 GPIO_Mode_IPD
(4) 模拟输入 GPIO_Mode_AIN

(5) 开漏输出 GPIO_Mode_Out_OD
(6) 开漏复用输出 GPIO_Mode_AF_OD
(7) 推挽输出 GPIO_Mode_Out_PP
(8) 推挽复用输出 GPIO_Mode_AF_PP

1. 八种模式

1.1. 浮空输入

CPU可以随时读取IO口的电平状态,什么都不接,相当于高电平,很容易受干扰

1.2. 带上拉输入

CPU可以随时读取IO口的电平状态,
减少干扰.通过在数据通道上部,接入上拉电阻和电源VDD,钳位在高电平!电阻同时起限流作用

1.3. 带下拉输入

CPU可以随时读取IO口的电平状态,
减少干扰,通过在数据通道上部,接入下拉电阻和接地,钳位在低电平!电阻同时起限流作用

1.4. 模拟输入

前面三种都是数字信 输入,模拟输入与它们不同,
从IO口过来的模拟量要被ADC转换成数字量才能被CPU读取咯

1.5. 开漏输出(只用作输出低电平)

GPIO软件置0,且接地——-IO输出低电平

GPIO软件置1,不接上拉——IO悬空
GPIO软件置1,接上拉——IO输出高电平

CPU可以在”输入数据寄存器IDR”监控IO口的状态,因为IO口的信息反馈到CPU相当于输入CPU,所以是在”输入状态寄存器”查看

1.6. 开漏复用输出

GPIO口被用作第二功能时,比如用于片内外设功能(TX1,MOSI,MISO.SCK.SS)

1.7. 推挽输出(既可以输出低电平,也可以高电平)

GPIO软件置0,且接地——-IO输出低电平
GPIO软件置1,且接上拉——IO输出高电平

1.8. 推挽复用输出

GPIO口被用作第二功能时,比如用于片内外设功能(I2C的SCL,SDA)

2. GPIO的配置

模式的配置介绍:
一个IO口需要4个bit来控制:
CNF MODE CNF MODE
00 00 ~ 11 11
也就是十六进制的 0x 0 ~ 0x F

其中MODE是设置输入输出模式::
00:输入(复位后的状态)
01:输出,最大速度10MHz
10:输出,最大速度2MHz
11:输出,最大速度50MHz

而CNF是在MODE的基础上选择更细分的模式:
(1)当MODE为00,即输入模式下:
00:模拟输入
01:浮空输入
10:上拉/下拉输入
11:保留
(2)当MODE为01,10,11,即输出模式时:
00:推挽输出
01:开漏输出
10:复用推挽输出
11:复用开漏输出

3.软件配置的写法

端口配置寄存器(2个32位的寄存器):CRH,CRL
作用: 配置输入输出模式
按照每四个bit位,为1个IO口

CRH:负责8~15 IO端口
CRL:负责0~7 IO口

数据寄存器(2个32位的寄存器):IDR,ODR
作用: 配置输入输出模式
按照每四个bit位,为1个IO口

IDR(端口输入数据寄存器,只读):只使用了低16位,读取IO口的输入状态,bit为1有输入,0无
ODR(端口输入数据寄存器,可写,不要读):只使用了低16位,bit写入1,IO口有输出,0则不输出

置位/复位寄存器(1个32位的寄存器):BSRR

复位寄存器(1个16位的寄存器):BRR

锁存寄存器(1个32位的寄存器):LCKR

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月26日
下一篇 2020年6月1日

相关推荐