开漏Open Drain(开集Open Collector)
开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。
栅极输入 0 时,NMOS 的漏极和源极导通,输出0。
栅极输入 1 时,NMOS 不导通,漏极高阻,输出1(需要外部上拉电路,上升沿比较缓慢)。

推挽Push Pull
推挽输出:可以输出高,低电平,连接数字器件。
栅极输入 0 时,高侧PMOS 高阻,低侧NMOS导通,输出0。
栅极输入 1 时,高侧PMOS 导通,低侧NMOS高阻,输出1(不需要外部上拉电路,上升沿比较陡峭)。
备注:
在STM32单片机中,IO端口有以下两种输出类型:
(7)复用功能的推挽输出_AF_PP --片内外设功能(I2C的SCL,SDA)
(8)复用功能的开漏输出_AF_OD--片内外设功能(TX1,MOSI,MISO.SCK.SS)
此时的IO端口只能做说明中的特定功能(I2C或者SPI),而不再是普通的GPIO功能。