【自学嵌入式:stm32单片机】GPIO输入
GPIO输入
外部输入设备
按键

按键是常见的输入设备,按下导通,松手断开
按键按下有抖动,由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动。

我们要对抖动进行过去,最简单的过滤方法就是加一段延时,把抖耗过去
传感器模块

传感器模块:传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化(比如光线越强,光敏电阻的阻值就越小;温度越高,热敏电阻的阻值就越小;红外光线强,红外接收管的阻值就越小),但是电阻的电压不容易直接被观察,所以通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出。

【注】一般在电路中看到一端接在电路中一端接地的都可以考虑一下是不是滤波电容,可以不看这个电容再分析电路
第三个图下拉电阻是可变得,上拉电阻不可变,相当于一根杆子被两个弹簧拉着,电阻越小对应的弹簧拉力越大

如果上下拉弹簧拉力一样(电阻阻值一样),则杆子会处于居中位置(也就是\(\frac{VCC}{2}\)),如果上面的阻值小(拉力强),输出电压将会变高,下面的阻值小,输出电压就会变低,如果阻值为0,电路中是短接状态,相当于拉力无穷大,如果上下拉电阻阻值都为0,就是两个无穷大的电阻在对抗,在电路中呈现的状态就是电源短路,所以这种情况应该避免
图中U1 LM393是电压二值化输出的芯片
硬件电路
按键和传感器的硬件电路如下:

一般来说都是上拉

第一个图,当K1按下,接地,PA0被瞬间拉低,KA没按下,此时PA0悬空,此时高阻态不确定,为了能确定,设置PA0是上拉输入模式,否则就会出现引脚电压不确定的错误现象
如果PA0是上拉输入模式,引脚再如何悬空,PA0都是高电平,在这种方式下按下按键引脚为低电平,松手为高电平

第二个图,相比于第一个图,这里外部接了一个上拉电阻,当按键松手时,引脚由于上拉作用,自然保持高电平,当按键按下时,由于接地,PA0变低电平,这种状态下引脚不会出现悬空状态,此时PA0引脚可配置为浮空输入或者上拉输入,如果是上拉输入,那就是内外两个上拉电阻共同作用,此时高电平就会更强一些,对应高电平就更加稳定,但是这种情况下,当引脚被强行拉到低时,损耗也就会大一些

第三个图,PA0通过按键连接到3.3V,要求PA0必须配置成下拉输入模式,当按键按下时,引脚为高电平,松手时,引脚默认为低电平,这种情况要求单片机引脚配置为下拉输入模式,但是一般单片机不一定有下拉输入的模式,所以最好还是用上面的接法

第四个图就是在第三个图基础上再外接一个下拉电阻,这种接法PA0需要配置为下拉输入模式或者浮空输入模式,
总结:
图(1)(2)接法,按键按下时引脚是低电平,松手是高电平;
图(3)(4)接法,按键按下时引脚是高电平,松手是低电平。

传感器,VCC接3.3V,GND接供电,DO接单片机GPIO的外设引脚,AO模拟输出需要用AD模数转换
ST改名C语言的关键字

_t表示通过Typedef重新命名的关键字
浙公网安备 33010602011771号