按键
- 按键和松开由于5-10ms对于单片机来说很漫长,所以需要对单片机进行过滤。防止按键按一下,单片机会有多次的反映
- 直接加一个延迟,将5-10ms给耗走就可以了
传感器模块
- 主要的原理是敏感电阻和定值电阻进行分压,就可以得到模拟电压的输出
- 然后再通过电压比较器进行二值化,就可以得到数字电压的输出了
下面来讲述一下这个传感器的作用
- R1是定值电阻,N1是可变电阻
- R1是和N1进行分压的,一个接到VCC正极,一个接到GND负极,这样就组成了基本的分压电路
- 然后C2是一个滤波电容,给输出电压进行滤波,消除一些干扰,保证输出电压波形的平滑
- 一般这种一个接电路,一个接地,需要考虑是不是滤波电容
- 当N1的阻值变小的时候,下拉作用增强,中间的AO端的电压就会拉低
-
- 极端情况:N1阻值为0,AO输出0V
- 当N1阻值变大,下拉作用减弱,然后R1就会上拉,电压就会升高
可以类比弹簧
- 分为弱上下拉,和强上下拉
LM393 进行二值化输出,电压比较器芯片
- C1是滤波电容
- 这个电压比较器起始就是一个运算放大器
- 当通向输入端1的电压,大于反向输入端的电压2是,那么输出就会瞬间输出最大值接VCC
- 反正就会变成最小值,接GND
IN+接到AO这里,就是模拟电压端
IN-接到的电位器,这个电位器的接法,也是分压电阻的原理
最后输出的结果就是DO,数字电压的输出
- 然后DO就接到了引脚的输出端
LED1是电源知识点,通电就亮,右边的是DO输出指示灯,可以指示DO的输出电平
- 低电平点亮,高电平熄灭
R5上拉电平,就是默认输出为高电平的
硬件电路
按键这里拥有的四种接法
- 当按键按下的时候,PA0直接下拉到GND,此时PA0的电压就是低电平
- 当按键松手的时候,按键就会悬空,此时PA0的电压不确定(必须要去PA0是上拉输入的模式,否则会造成引脚电压不确定)
- PA0是上拉输入模式,那么按下就是低电平,松开就是高电平
- 当按键松手的时候,引脚由于R1上拉的作用,就会保持高电平
- 当按键按下的时候,引脚直接到GND,那么就是低电平
- 此时PA0的引脚可以配置为浮空输入或者上拉输入
- 若是上拉输入,那么就是R1和STM32里面的上拉电阻共同作用,此时高电平会更强一些,高电平更加稳定
同理,第一个要配置为下拉输入的模式
第二个为下拉输入模式和浮空输入模式
上面的,按下PA0是高电平,松手是低电平
下面的反之
- STM32和传感器模块的接地
- VCC接3.3v
- GND接地
- DO随便接一个,用来读取数据
- AO模拟输出,学ADC模数转换器再说
C语言宏定义
- 首先define新名字在左边,typedef新名字在右边
- 宏定义不需要分号,typedef后面必须加分号
- 宏定义任何名字都可以换,typedef只能给专门的变量类型换
- 但是对于变量类型而言,typedef更加安全,会对命名进行检查
typedef struct{
char x;
int y;
float z;
}StructName_t;
int main(void){
StructName_t c;
}