STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

以上为GPIO的讲解顺序

在 开发指南第六章有简要的介绍 GPIO口 官方的参考

STM32F4中文参考手册

STM32 F407 的芯片资料  

STM32f407 有7组 IO口

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

1.输入浮空

如果一个IO口 被配制成了浮空输入模式,那么它的 输出驱动器这部分的电路是不工作的。电平从IO口输入后先经过可以配置的上拉下拉 ,然后经过 TTL施密特触发器就会被打开,那么就可以通过输入数据寄存器读取IO口的电平。

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

2  输入上拉

如果被配置为输入上拉后,如上图所示的上拉电阻会被接到Vdd,输入的电平会被拉倒VDD, 之后经过TTL触发器后到输入数据寄存器,之后被CPU读取

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

3输入下拉 

 输入电平被拉低

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

4 模拟输入  输入的是模拟电压,这时不经过施密特触发器

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

接下来看一下输出模式:(这个图是F1的,F4与F1的区别在于F4的上下拉电阻是在外面)  

第一步:1.  通过CPU写相关的寄存器,比如 位设置和清除寄存器,(操作位设置、清除寄存器也是间接的操作输出数据寄存器)

              2  或者直接操作输出数据寄存器

假如通过输出数据寄存器输出一个  1 ,它通过输出控制电路, 那么 N-MOS就会处于关闭状态,那么它的输出电平就不会受

输出驱动器的影响,而是受外部的上下拉影响(也就是上图绿色箭头所指的开/关,这部分电路)。 IO口的输出电平可以由CPU通过输入数据寄存器读取。但是 注意:我们输出1读回来的不一定是 1,它的状态受上下拉电阻的影响。

    如果我们输出是 0,那么 N-MOS管就打开了那么 MOS就会将输出电平拉低,输出电平就会为0

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

开漏复用输出: 它与 开漏输出模式差不多。开漏输出是通过 CPU写寄存器,而复用开漏 是通过 外设模块来控制输出。其他与开漏输出一样。

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

接下来还有第3种输出模式,推挽输出 它与开漏输出很相似,不过注意上图的黄色部分 这里还包含了一个 P-MOS 管。

在开漏输出的时候,例如:我们通过输出数据寄存器给输出 控制电路写 1,那么 P-MOS管他就会被导通 N-MOS管就会被截止。那么就会输出 1, IO口 输出的也是 1,这样就达到了输出为1 的 效果。 这时,我们通过输入电路去读取 此时IO口的 输出电平,

如果说 推挽输出设置为0,这时 P-MOS管是截止, N-MOS管导通,那么电平就会被拉为 低。这时就会 直接输出一个 0.这个时候我们去读取 输入数据寄存器的话,读到的也是0.

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

推挽复用输出模式:与推挽输出模式是差不多的,他们唯一的 区别就是 复用功能输出来自 片上外设模块。

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

这里 开漏输出能够输出强低电平, 因为在开漏模式下 P-MOS 管截止  N-MOS管导通,所以当输出控制电路输出为 1时,要看 IO口的 上下拉设置,如果设置为上拉就是 1,如果设置为下拉就是0

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

上图是STM32F4相关的配置寄存器,

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671

这是个只读寄存器,比如说我们要读 PA0,就看他的 IDR0 是1的话说明 是高电平, 0 

的话说明是低电平。

STM32F4 学习 day4 正点原子 第12讲 STM32 GPIO口工作原理 QQ860099671