输出部分情况。输出部分就是简单明了一些,主要的部分就是红色圈出来的
1.数字部分可以有输出数据寄存器或者片上外设控制,方式有
(1)通过输出数据寄存器进行控制,即是普通的IO口进行控制
(2)位设置/位清除寄存器,可以只操作寄存器的某一位而不影响其他位(如读取函数GPIO_ReadInputDataBit)。这是因为如果使用寄存器会同时操控16个 端口,即如果操控寄存器进行读写就只能整体读写(如读取函数GPIO_ReadInputData)
2.两个Mos管
上侧位P-MOS,下侧为N-MOS,MOS管是一种电子开关,信号控制开关的导通与关闭,开关负责将IO口接到VDD或者VSS上,可以通过选择推挽输出、开漏输出和关闭三种模式来控制MOS管的状态
(1)在推挽输出模式下,P-MOS与N-MOS均有效,数据寄存器为0时,上导下断,输出接VDD输出高电平。输出为0时,上断下导,接入VSS,输出低电平。
在这种模式下高低电平均有较强的驱动能力,推挽输出也叫强推挽输出模式。此时,STM32对IO口的输出效果有着绝对的控制权
(2)开漏输出模式下,P-MOS无效,只有N-MOS进行工作,但是图中的“输出控制”模块依旧 只会进行原先的操作:即在输出寄存器为1时,N-MOS断开,输出断开,为高电阻模式,没有电流输出;但是输出寄存器为0时,P-MOS断开,输出为VSS,即输出低电平。也就是说,在开漏输出的情况下,只有低电平有驱动能力,而高电平没有驱动能力
一般来说,开漏输出可以作为通讯协议的驱动方式,比如I2C(I方C)通信引脚,在多机通讯时,可以避免各个设备相互干扰。
(3)关闭状态
引脚作为输出模式时,电平由外部信号控制