STM32-GPIO

1.GPIO基本知识

带Ft即为可容忍5伏。 可配置为8种输入输出模式;引脚电平:0V~3.3V,部分引脚可容忍5V;输出模式:可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 ;输入模式:可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。

2.基本结构

寄存器为32位,低16为有效,分别对应0-15号GPIO引脚电平。内核对寄存器进行读写即可完成输出、读取电平功能。

73ad4062e3714e28aaf782b24ed3e64e.jpg

 

3.位结构

4b3ab84f7e3345b882aab7238beaa935.jpgb78fc67bde1f45efa97719bcbc80e886.jpeg 

2b0023672df741e5a004dab11f1cfc17.png 

1cbbe480e422410d8c93268e9dfa2fa3.png 

4. 8种工作模式

1️⃣普通IO推挽输出。普通IO口推挽输出就是,对输出数据寄存器进行置0或置1操作,然后通过输出控制缓冲器对双MOS电路进行控制。IO电平输出的双MOS电路通路同时由PMOS和NMOS组成,当输出控制端输出为1时,上方PMOS导通,下方NMOS截止,电流方向为VDD->PMOS->输出端,对外部引脚输出高电平;当输出控制端输出为0时,上方PMOS截止,下方NMOS导通, 电流方向为VSS->NMOS->输出端,对外输出低电平。此时对输入数据寄存器的读访问可得到I/O状态。

GPIO配置成输出模式时,可使用上拉、下拉或悬空模式。但此时由于输出模式时引脚电平连接到输出数据寄存器,而输出数据寄存器对应引脚的位为0,即引脚初始化后默认输出低电平,所以在这种情况下,上拉只能起到小幅提高输出电流能力,但不会影响引脚的默认状态。

4fa789df4bf04e30b4cda5e3c1791c95.png

 

2️⃣普通IO开漏输出。普通IO开漏输出,就是在输出控制时,不使用双MOS电路中的PMOS,因此无法输出高电平,只有在输出低电平时,NMOS生效。开漏输出时,只有NMOS工作,这样输出数据寄存器可控制I/O输出高阻态或低电平。如果要输出高电平,则需要在芯片内部配置上拉电阻(弱上拉)或者在芯片IO外部连接上拉电阻。此时对输入数据寄存器的读访问可得到I/O状态。aa6b10c0e1f6452185ae478a79461a77.png

 

3️⃣复用功能推挽输出。GPIO不仅仅可以用作普通的 IO 口输出,还可以作为芯片上其他外设的特殊功能引脚,有些引脚可能可以用作多种不同功能,这种就叫做GPIO的复用,具体用作哪种功能,需要根据使用进行相应的配置。使用成复用功能时,GPIO就不会经过输出数据寄存器输出,而是直接通过芯片上的具体外设功能电路输出到输出控制缓冲器。此时通过读输入数据寄存器可获取I/O实际状态,但一般直接用外设的寄存器来获取该数据信号。

使用GPIO复用功能时,当配置成推挽输出,这样片上外设就可以输出高电平或者低电平,例如将GPIO配置成串口USART输出TXD管脚。

如果需要实现DAC模拟输出,那么也需要将管脚配置成复用功能,但是此时作为“模拟输出”功能,DAC的模拟信号输出就不经过双MOS管结构了,在GPIO结构框图的右下角处,模拟信号直接输出到引脚。91ca56e1a93b48d5b9393ffd751ee55a.png

 

4️⃣复用功能开漏输出。复用功能开漏输出时,GPIO就不会经过输出数据寄存器输出,而是直接通过芯片上的具体外设功能电路输出到输出控制缓冲器。此时通过读输入数据寄存器可获取I/O实际状态,但一般直接用外设的寄存器来获取该数据信号。69889504326e42df825412df20977ec3.png

 

5️⃣GPIO带上拉电阻输入,需要将端口配置为独立的上拉电阻。可以看到,输入路径经过施密特触发器后,当端口配置为普通IO输入时,该输入路径进入到输入数据寄存器,因此就可以通过输入数据寄存器读取IO口的电平状态,例如将IO口连接按键,读取外部按键的电平状态;当端口配置成复用功能时,输入路径会直接连接到芯片上具体的外设中去,例如将端口配置成串口USART,那么该IO口就是串口的接收RXD管脚。67cbd94eb9694364a42cc20bb523cee6.png

 

6️⃣GPIO带下拉电阻输入,需要将端口配置为独立的下拉电阻。可以看到,输入路径经过施密特触发器后,当端口配置为普通IO输入时,该输入路径进入到输入数据寄存器,因此就可以通过输入数据寄存器读取IO口的电平状态,例如将IO口连接按键,读取外部按键的电平状态;当端口配置成复用功能时,输入路径会直接连接到芯片上具体的外设中去,例如将端口配置成串口USART,那么该IO口就是串口的接收RXD管脚。f011e23f082541b6be205c5d61e9b1b2.png

 

7️⃣GPIO浮空输入。输入浮空模式下,指的是该IO口既不配置接上拉电阻也不配置接下拉电阻。如果该引脚悬空的情况无信号输入时,该端口的电平是不确定的。当有电平信号进入IO时,IO电平状态是完全由外部输入决定,MCU复位上电后,默认为浮空输入模式。bdbf29150fce4a609e3b52ccebb19ee4.png

 

8️⃣GPIO模拟输入。当 STM32需要进行 AD( 模数 ) 转换采样时,需要把引脚设置为模拟输入模式,模拟输入模式下,不需要连接上拉和下拉电阻,因为GPIO用于模拟功能时,引脚的上、下拉电阻是不起作用的。这个时候即使在配置了上拉或下拉电阻,也不会影响到模拟信号的输入。

547c091fbba445c0930a31fb05a477cc.png

 

 

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值