再仔细看了《STM32中文参考手册_V10》.pdf之后,得出如下结论,请各位同仁斟酌。
设置GPIO为输出时,电路图如下:
图1 中文参考手册原图
图2 中文参考手册原说明
从图1红色指示(输出走向)、紫色指示(输入走向)来看,结合图2中文字解释,可得到如下的结论:
1 设置为输出模式后,输出通道有效。
如果是开漏模式,就是将“红色圈”中的两个MOS管中的P-MOS去掉。(此时,如果输出高电平,外部应接上拉电阻到VCC。)
如果是推挽模式,就是“红色圈”中的两个MOS管均起作用。(此时,如果输出高电平,外部引脚由于输入控制接地了,那就有可能烧引脚)
2 设置为输出模式后,输入通道有效。
设置为输出模式,从图1和图2描述来看,图1中的“紫色圈”施密特触发器决定是否允许输入。而图2的描述说“施密特触发输入被激活”,
因此可以认为“输入通道”有效。
同时,图2的描述“开漏模式时,对输入数据寄存器的读访问可得到I/O状态”更加说明了输入模式的打开。
但是有个问题需要思考和实验。
条件:
开漏模式,既做输出又做输入,分时进行。
问题:
假如前一时刻t0,从输出通道输出了0。此时,红圈N-MOS导通接地,外部引脚输出0。
假如此状态未变,下一时刻t1需要从外部引脚读入IO状态。
外部引脚为0无所谓,正常。
但是如果外部引脚为1,是否会因为STM32内部输出通道的N-MOS接地而把外部的1给拉为了0呢?
|