上述两种模式都需要接上拉电阻,因为该模式下不接上拉电阻就只能输出低电平(可以说P-MOS管关闭)
讲这两种模式前我们先看这个结构体GPIO_InitTypeDef里的成员Alternate,其解释为:要连接到选定引脚的外围此参数可以是@ref GPIOEx_Alternate_function_selection的值,当我们作为普通GPIO使用时,该位置0,否则需要给你想要使用的外设的值,比如想使用I2C,那么该值可以为GPIO_AF4_I2C1。
1,GPIO_MODE_OUTPUT_OD既开漏输出
在此模式下是由芯片内核直接操作配置该模式的IO口,使其输出低电平(N-MOS管导通,输出接地),否则就是高电平。
2,GPIO_MODE_AF_OD既复用开漏输出
由MCU外设控制,与GPIO无关(可以这样理解),该模式下的好处是输出速度高,常见于一些I2C,SPI等外设当中。
如果你MCU没有外设时,你去模拟I2C,或者SPI时就不能使用GPIO_MODE_AF_OD模式了,这样芯片IO口不会输出信号,尽管你的代码不报错,所以配置是需要注意!
这里解释一下为什么需要接上拉或者下拉,目的是为了增强驱动能力。可以看下图,能很好的表达上述内容。