单片机的GPIO的一些学习
学习一下STM32有关GPIO的基本知识
GPIO分类
STM32单片机的GPIO有八中模式
-
输入模式
-输入浮空(GPIO_Mode_IN_FLOATING)
可以理解为浮空对吧空的,就是在IO控悬空时不知到IO口是搞电平还是低电平,完全根据外部的电路去决定这个IO的读取的电平高低。所以在用浮空输入模式时要记得外部上拉或者下拉电阻。-输入上拉(GPIO_Mode_IPU)
上拉输入,就是在单片机内部将IO口电平上拉,当悬空时读取IO口电平为高,当单片机内部有上拉的时候我们外部就不需要上拉了很多情况下这样做是会省去一个电阻的钱的,能薅羊毛为什么不呢。
-输入下拉(GPIO_Mode_IPD)
下拉输入,和上拉输入一样的意思只是是下拉。
如上按键电路的设计
KEY_UP引脚就是典型的一个下输入,设置PA0引脚为下拉输入模式,当按键没有按下的时候读取IO口电平返回的是0当按键按下的时候读取IO口电平返回的是1;
同理KEY0、1、2使用的是上拉输入模式,当按键没有按下的时候也就是引脚悬空的时候去读IO口读取到的是1当按键按下的时候读取IO口电平读取到的就是0;
-模拟输入(GPIO_Mode_AIN)
顾名思义,模拟输入嘛 就是模拟信号输入。单片机内部关闭施密特触发器施密特触发器是个什么东西呢,电路图就不看了看一下作用吧
忽略水印
关闭施密特触发器以后IO口就能直接的接受到模拟信号,一般这个模式用于ADC之类的东西,采集模拟信号。
主要mark一下这些模式的应用场景,在使用的时候记得在相应的场合用上最正确的配置
-
输出模式
-开漏输出(GPIO_Mode_Out_OD)
开漏输出应该是我们可能用的比较少的一种输出方式吧,开漏输出呢,输出0就是接地,输出1时外部是悬空状态的,需要外部接上拉电阻,一般用这个模式的时候就是挂载外设外设自己带有上拉电阻这时候用开漏模式就可以了。也有人说类似于三极管的集电极一样的道理,自己电很小需要外部上拉。
-开漏复用功能(GPIO_Mode_AF_OD)
开漏复用,就是说这个引脚不能单独的作为纯粹的独立IO口来使用,比如用于一些片内外设功能(I2C的SCL,SDA)
引脚已经固定到外设对应的引脚上了。
-推挽式输出(GPIO_Mode_Out_PP)
推挽输出应该是我们平常做输出的时候使用的最多的一种模式了,比如点亮个等什么的,做个使能引脚什么的,推挽输出输出1就是高电平输出,输出0就是接地,我们平时应该使用的比较的多。
-推挽式复用功能(GPIO_Mode_AF_PP)
推挽复用,就是说这个引脚不能单独的作为纯粹的独立IO口来使用,比如用于一些片内外设功能(TX1,MOSI,MISO.SCK.SS)
引脚已经固定到外设对应的引脚上了不能作为一个独立的IO口使用的了。