【STM32】Cortex-M4 超详细的GPIO输出分析

一、STM32的GPIO口架构
   我们知道stm32的GPIO口可以感知我们的外部世界,也可以通过外设控制外部世界,但是我们要实现这个感知和操控的过程,那么我们就要知到GPIO架构的原理是什么.详细的GPIO概述可以到本人的另一博客观看,连接如下:【STM32】Cortex_M4 GPIO口概述知识总结_丘比特惩罚陆的博客-CSDN博客
   接下来,进入我们的正题。我们知道,一个GPIO口含有的功能分别是:输入浮空、输入上拉、素如下拉、模拟输入、具有上拉或下拉的开漏输出、具有上拉或下拉的推挽输出、具有上拉或下拉的复用功能推挽、具有上拉或下拉的复用功能开漏。

红线往上:我们结构的输入部分 ,指的是用来采集我们IO口的信息,信号是由外部向内部流动;      红线往下:我们结构的输出部分,用来控制外部器件,信号有内部向外部流动;

竖线往左:我们的芯片内部;
竖线往右:我们的芯片外部.

为了更好的了解其原理,我们局部来看一下内部的输出部分,也就是这个部分:

 这是一个输出驱动器,这个驱动器呢,就是有我们的这个虚线框里面的所有部件组成,我们的数据大致的流向可以看出下面的图片的路线图。

                                                              数据流向图

1、在推挽功能的时候,P-MOS管和M-MOS管都能工作;

在开漏功能的时候,P-MOS管永远不工作,N-MOS管可以工作。

注意,这里说的可以工作不代表是一定一起工作。

2、当选择的是推挽功能,输出控制的输入口输入数据,P管导通,M管不导通,由于M管

导通以后输出的IO口与VDD连接,这时候我们输出高电平。输出控制的输入口输入一个数据,M管不导通,N管导通以后输出的IO口与VSS连接,这个时候输出低电平。一般可以用来驱动LED、蜂鸣器等等。

3、当选择的是开漏功能,输出控制的输入口输入数据,P管不导通,M管不导通,这时候我们输出什么电平不确定,取决于外部电路。一般用于SPI等等的通信上面。

4、芯片内部有上下拉;并且有独立的开关,上拉:VDD连接到电阻到信号线上。上拉中:电阻目前没有电流流过;下拉:VSS连接一个电阻到信号线,下拉中,电阻目前没有信号流动。

 注意:这时候我们的上下拉电阻都很大.所以我们芯片内部的上下拉都是弱上下拉,这样的好处是,可以让IO口产生一个确定的状态。

 5、整个输出过程:王输出数据寄存器中/复用功能输出写入数据,就能输出到IO口。推挽或者开漏上下拉取决于自己想要的功能需求。比如点灯,我可以用推挽输出。

到这里我们就总结完我们的输出部分,另外的输出部分我们分开来写,有需要的朋友可以进入到主业搜索“GPIO输入分析”,提供该部分的讲解。

猜你喜欢

转载自blog.csdn.net/Lushengshi/article/details/126200140