极客秀
搜索

详细解析STM32中GPIO有四种模式

好多朋友开始学习单片机的时候都是从51单片机开始,也许大家的第一个程序都是点亮一个LED灯。这是大家第一次接触到GPIO,而51单片机的IO口是准双向口,同时具备输入输出的功能,使用上也是非常的简单。
但是一到STM32,就会被GPIO的各种模式整的一脸懵逼,本期我们就介绍STM32的GPIO的各种模式。
STM32的GPIO大致可以分为四类:输入模式、输出模式、模拟模式以及复用模式。而每个都有细致的区分和小类。

  • 输入模式

首先是输入模式,顾名思义输入模式就是用来向单片机输入信号的,但是这里的信号需是符合STM32的高低电平信号。
STM32单片机的IO口电平兼容CMOS电平和TTL电平。对于逻辑电平0,所代表的电压范围在0.8v以下,而大于2v的话则代表逻辑1。STM32工作电压范围为2V
≤ VDD ≤ 3.6V。对于COMS端口,逻辑0的电压范围为-0.3V ≤ VIL ≤
1.164V。至于高电平,STM32支持5v和3.3v。具体须看STM32芯片手册以定。
而输入模式根据上拉电阻的不同分为输入上拉、输入下拉、输入浮空,它决定着当没有信号输入的时候,GPIO的电平是高电平还是低电平亦或者是不确定电平。

  • ** 输出模式 **

顾名思义是单片机对外输出信号,这里的信号也是高低电平,外部器件可以读取输出端口的高低电平以达到控制外部器件的目的。
输出模式除了上拉下拉电阻用以避免浮空状态的高低电平之外,还区分了 推挽输出和开漏输出

如图即为推挽输出的示意图,电流通过两个MOS管/三极管由控制引脚形成一推一挽,故名推挽。

推挽输出的好处是其可以有较大的输出电流,如果说后续的负载需要较大的电流的话,推挽输出是一个非常好的选择。

但是有利有弊,由于其推挽输出的电路结构,导致不能同时有两个推挽输出的IO口相连接。

否则电流就会通过三极管/MOS管导通,导致GPIO 烧毁 ,因此如果使用GPIO的推挽模式,则必须避免IO的相互连接,也就是 线与
而另一种模式则是:开漏输出

由于其上拉电阻的存在,因此开漏输出的IO可以实现线与。但是同样的是这个上拉电阻的存在,导致其输出能力会不如推挽输出,因此开漏输出通常用在总线应用上,例如I2C的SCL和SDA线通常会挂载多个设备,因此通常这时候我们通常就会使用开漏输出,尤其是
使用模拟I2C通讯 的时候千万要小心不要使用成推挽输出了。

  • ** 模拟模式 **

模拟模式通常应用在ADC或者DAC中。

为了减少上拉电阻和下拉电阻对ADC采样或者DAC输出的影响,通常模拟输出会关闭上下拉电阻,保证模拟信号不失真。

所以如果你的ADC和DAC的准确度有问题的话,可以检查一下是否加了上下拉电阻而不是将IO配置为输入模式。

  • 复用模式

复用模式通常作为外设使用,例如硬件I2C,硬件SPI,串口通信等等,复用下,通常这些IO会有其特定的功能,我们一般不将其作为普通的输入输出IO使用。
最后还有一些特殊IO,例如时钟输入IO,事件检测IO等等。

1.转载请保留原文链接谢谢!
2.本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
3.本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
4.本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
5.联系方式(#替换成@):pm#vimge.com

  相关内容