我是靠谱客的博主 想人陪舞蹈,这篇文章主要介绍3.3 GPIO输入按键2. 传感器模块介绍3. STM32单片机关于C语言的知识储备完,现在分享给大家,希望可以做个参考。

  1. 按键

1.1 按键介绍

•按键:常见的输入设备,按下导通,松手断开

•按键抖动:由于按键内部使用的是机械式弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动

1.2 按键的四种接法

P1是最常用的接法,p1中按键按下为低电平,但必须要求是上拉输入,否则会出现引脚电压不确定的错误现象,此时为引脚悬空,PA0为高电平。所以按下按键为高电平,松开按键为低电平。

P2中外部接了一个上拉电阻,当按键松手时,套用弹簧模型(模型在下面),弹簧上拉,引脚为高电平,当按键按下,引脚接GND,下面的弹簧有无穷大的力,引脚为低电平。不存在悬空状态,可以配置为浮空输入或上拉输入。

P3按键按下为高电平,松手为低电平。PA0必须为下拉输入。

P4 PA0需要配置为下拉输入模式或者浮空输入模式。

2. 传感器模块介绍

2.1 实物展示

传感器模块:传感器元件(光敏电阻/热敏电阻/红外接收管等)的电阻会随外界模拟量的变化而变化,通过与定值电阻分压即可得到模拟电压输出,再通过电压比较器进行二值化即可得到数字电压输出

从左往右依次为:光敏电阻传感器、热敏电阻传感器、对射式红外传感器、反射式红外传感器

2.2 电路原理

  • 使用上下拉电阻分析电路

举例方便说明上下拉电阻的工作逻辑

将AO输出端想象成一个放在屋里的水平杆,R1上拉电阻相当于拴在屋顶的弹簧将杆子往上拉,N1下拉电阻相当于栓在地面的弹簧,将杆子往下拉,电阻的阻值越小,弹簧的拉力越强。在模型中,弹簧中间的电压为VCC或者GND,当两个弹簧相互拉扯的时候,中间的输出端就会向拉力强的一端偏移,偏移量取决于弹簧之差,如果上下拉弹簧的弹力相同,杆子位于居中位置,电路输出VCC/2的电压。如果上阻值小,拉力强,输出电压变高,下面阻值小,输出电压就变低,阻值为0电路中为短路,相当于两个无穷大拉力在对抗。

  • 二值化电压比较器

本质上是一个运算放大器,当同相输入端的电压大于反相输入端电压时,输出瞬间升高到最大值,也就是说输出接VCC,反之当同相输入端电压小于反相输入端电压时,输出就会瞬间降为最小值,也就是输出接GND。

2.3 传感器模块接法

DO数字输出接端口,用于读取数字量。

3. STM32单片机关于C语言的知识储备

3.1 C语言数据类型

注意:区别于51单片机中int占16位

3.2 C语言宏定义

•关键字:#define

•用途:用一个字符串代替一个数字,便于理解,防止出错;提取程序中经常出现的参数,便于快速修改

复制代码
1
2
3
4
//定义宏定义: #defineABC 12345//用ABC字符串来替代12345这个参数 //引用宏定义: int a = ABC; //等效于int a= 12345;

3.3 C语言typedef

•关键字:typedef

•用途:将一个比较长的变量类型名换个名字,便于使用

复制代码
1
2
3
4
//定义typedef: typedef unsigned char uint8_t; //引用typedef: uint8_t a; //等效于unsigned char a;

3.4 C语言结构体

•关键字:struct

•用途:数据打包,不同类型变量的集合

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//定义结构体变量: struct {     charx;     int y;     float z; } StructName; //定义一个结构体变量叫StructName里面包含了charx; int y; float z三个子选项 // 因为结构体变量类型较长,所以通常用typedef更改变量类型名 typedef struct {     charx;     int y;     float z;} StructName_t; //此时我们重新定义只需要 StructName_t a; StructName_t b; //使用.运算符引用结构体成员: StructName.x = 'A'; StructName.y = 66; StructName.z = 1.23; //或 pStructName->x= 'A'; //pStructName为结构体的地址   pStructName->y= 66;   pStructName->z = 1.23;

3.5 C语言枚举

•关键字:enum

•用途:定义一个取值受限制的整型变量,用于限制变量取值范围;宏定义的集合

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//定义枚举变量: enum {     FALSE = 0, TRUE = 1 } EnumName; // 因为枚举变量类型较长,所以通常用typedef更改变量类型名   typedef enum {     FALSE = 0,     TRUE = 1 } EnumName; //引用枚举成员:只能按照枚举的定义 EnumName = FALSE; EnumName = TRUE;

最后

以上就是想人陪舞蹈最近收集整理的关于3.3 GPIO输入按键2. 传感器模块介绍3. STM32单片机关于C语言的知识储备完的全部内容,更多相关3.3内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部