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

以上为GPIO的讲解顺序

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

STM32F4中文参考手册

STM32 F407 的芯片资料  

STM32f407 有7组 IO口

1.输入浮空

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

2  输入上拉

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

3输入下拉 

 输入电平被拉低

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

的话说明是低电平。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值