从零开始——STM32学习日记

发布于:2023-01-07 ⋅ 阅读:(251) ⋅ 点赞:(0)

系列文章目录

第一章 初识GPIO


前言

        本人最近刚接触STM32单片机,可以说是一个100%的新手小白,对于单片机的一些基础概念很容易弄混淆,比如认为GPIO与串口是两个差不多的接口。但随着不断的学习,这些概念开始有了一些理解,希望能给同样为新手的朋友一些帮助。此外,非常感谢暮尘依旧老哥的文章,本文的大部分理解都是基于这篇文章,感兴趣的朋友可以点击这里

一、GPIO是什么?

        GPIO的英文全称问general porpose intputoutput,即通用输入输出端口。在日常工作中,可以简称为I/O口。因此,GPIO的关键字在于input与output,我将GPIO理解为输入/输出信号的端口,与串口不同的时IO口只能输入/输出信号,而串口可以输入/输出数据。

二、GPIO的工作模式

        现在网上很多资料介绍GPIO一共有8种工作模式,这种说法没有问题。但我觉得GPIO主要有两大工作模式,即输入模式输出模式。其中输入模式可分为浮空输入上拉输入下拉输入模拟输入,输出模式可分为开漏输出推挽输出复用开漏复用推挽

1.输入模式

        1.浮空输入。浮空输入由IO口经过施密特触发器直接读进,如上图所示,该模式下VDD与VSS开关均处于断开状态。倘若IO口并没有输入信号,那么此时单片机读取的将是一个像浮在空中的云朵一样不稳定的电信号,因此该输入模式称为浮空输入。

        2.上拉输入。从上面的介绍中,我们可以知道当IO口没有信号输入时,片上读取的是一个不稳定的电平信号,而上拉输入模式并没有这样的缺点。如上图所示,当我们闭合上拉开关,电路会连接一个VDD高电平,如果此时没有信号输入,则单片机读取的电信号一直稳定为VDD高电平。若外部输入高电平,与VDD几乎没有电势差,输入的依旧是高电平;若外部输入低电平,由于上拉电阻的存在,不会出现较大电流,输入的依旧是一个低电平。因此上拉输入即可以输入高电平又可以输入低电平,在无信号接入时始终输入高电平

        3.下拉输入。 与上拉输入不同的是,下拉输入需要断开上拉开关,闭合下拉开关。此时,电路会连接一个VSS低电平,如果此时没有信号输入,则单片机读取的电信号一直稳定为VSS低电平。若外部输入高电平,与VSS形成电势差,输入高电平;若外部输入低电平,则输入也一个低电平。因此下拉输入即可以输入高电平又可以输入低电平,在无信号接入时始终输入低电平

 

        4.模拟输入。如上图所示,模拟输入路线并不经过施密特触发器,因此该模式下输入的是一个没有任何改变的真实电信号,模拟输入通常用于单片机AD模块读取外设真实电压信号。 

2.输出模式


1.开漏输出。从图中可以看出,IO口的输出主要是通过MOS管来控制的。当处于开漏输出时,我们可以把输出电路看作一个水管,而MOS管则是一个泄水阀,水量高时,由于泄水阀的存在,输出水量低,水量低时,泄水阀不工作,输出水量低。对应到实际电路上就是,当输出高电平时,MOS管打开,最终输出低电平;当输出低电平的时候,MOS管关闭,最终输出浮空电压。这样做的好处主要有两个,一是可以自由在外部添加上拉电阻,设置给定高电压;二是拉低总线

2.推挽输出。推挽输出是我们常用的输出模式,一句话概括就是——片上输出高电平最终输出低电平,片上输出低电平最终输出高电平。原因是当片上为高电平时,P-MOS管关闭,N-MOS管打开,而低电平时相反。

3.复用开漏。复用开漏与开漏输出的区别在于复用开漏是由其他外设输出的电信号。

4.复用推挽。 复用推挽与推挽输出的区别在于复用推挽也是由其他外设输出的电信号。

总结

        本文只是对GPIO的一些简单的认识,许多都是基于他人的讲解,因此若有什么需要补充和不正确的地方,欢迎大家批评指正。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到