https://blog.csdn.net/kevinhg/article/details/17490273
这篇文章写的很详细
1.输入浮空
浮空输入一般多用于外部按键输入,顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了。
浮空输入,可以做KEY识别,RX1
2.输入上拉
加上拉电阻到 VDD
3.输入下拉
加下拉电阻到 GND
4.模拟输入
模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电
5.开漏输出
开漏,就等于输出口接了个NPN三极管,并且只接了E,B,而C极是开路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出1的时候,就可以是5V电压,也可以是3.3V电压了,但是不接电阻上拉的时候,这个输出高就不能实现了。
6.推挽式输出
推挽,就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻。
7.推挽式复用功能
8.开漏复用功能
总结在STM32中选用IO模式
1、浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1
2、带上拉输入GPIO_IPU——IO内部上拉电阻输入
3、带下拉输入GPIO_IPD—— IO内部下拉电阻输入
4、模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电
5、开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能
6、推挽输出GPIO_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
7、复用功能的推挽输出GPIO_AF_PP ——片内外设功能(I2C的SCL,SDA)
8、复用功能的开漏输出GPIO_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)