stm32之GPIO(二)
输入上拉:当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对应的管脚:配置管脚为模拟输入;
如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接,将管脚配置成输出功能后,如果外设没有被激活,那么它的输出将不确定;
上拉电阻的目的是为了保证在无信号输入时输入端的电平为高电平。而在信号输入为低电平是输入端的电平应该也为低电平。如果没有上拉电阻,在没有外界输入的情况下输入端是悬空的,它的电平是未知的无法保证的,上拉电阻就是为了保证无信号输入时输入端的电平为高电平,同样还有下拉电阻它是为了保证无信号输入时输入端的电平为低电平。
这是上拉电阻和下拉电阻的作用!所以你在这里设置时!是没有多大的区别的!
八种模式:
(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 复用推挽输出 //可开启第二功能的推挽