当前位置:   article > 正文

江科大/江协科技 STM32学习笔记P7_stm32江科大笔记

stm32江科大笔记


GPIO输入

1、按键抖动

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

2、传感器模块

在这里插入图片描述

N1是可变电阻,R1是分压的定值电阻,C2是滤波电容,为了给中间的电压输出进行滤波,用来滤除干扰保证输出电压波形的平滑,一般电路中一端接在电路中,另一端接地的电容,可能是滤波电容,由于滤波电容不是电路的主要框架,在分析电路时可忽略掉。
在这里插入图片描述
用分压定理来分析传感器电阻的阻值变化对输出电压的影响,当N1阻值变小时,下拉作用增强,中间的AO端的电压会拉低。说人话就是N1和R1串联,N1和AO并联,U=IR,N1阻值变小电压也变小,和AO并联导致AO电压也变小。
AO就是想要的模拟电压输出,通过排针4输出。AO的数字输出就是对AO通过芯片LM393进行二值化的输出,LM393里面有两个独立的电压比较器电路。
电压比较器知识:当同相输入端的电压大于反相输入端的电压时,输出就会瞬间升高为最大值也就是接VCC,反之输出瞬间降低为最小值接GND。
同相输入端IN+接AO,IN-接电位器R2,两个电压进行比较最终输出DO,数字电压输出,接引脚3。
最右边的是两个指示灯,左边的是电源指示灯,右边是DO输出指示灯,低电平点亮,高电平熄灭。

3、按键和传感器模块的硬件电路

在这里插入图片描述
上边是下接按键方式,下边是上接按键方式。
左上一:选取PA0口,通过K1接地,当按键按下时,PA0被直接下拉到GND,此时读取PA0口的电压就是低电平,当按键松手时PA0悬空,悬空会导致引脚电压不确定,所以PA0必须是上拉输入模式,按键松手时就会为高电平。
左上二:外接了上拉电阻,可以选择浮空输入或上拉输入。如果是上拉输入,那就是内外两个上拉电阻共同作用,这样高电平就会更强一些,对应高电平更稳定。但是当引脚被强行拉到低时,损耗也大一些。为什么损耗大呢?两个上拉电阻并联,电阻变小,上拉电阻上的分压就小,那PA0的电压就变大了,电流也大,这些就是损耗,此外,初学时我认为两个上拉电阻有两个正极,现在看应该不是,只是电路没画全,应该是一个正极并联两个上拉电阻
在这里插入图片描述
右边是传感器模块的电路,DO数字输出接端口PA0,用于读取数字量,AO模拟输出。

VSS、VDD、VCC是什么

(1)VCC:C=circuit 表示电路的意思, 即接入电路的电压,模拟电源
(2)VDD:D=device 表示器件的意思, 即器件内部的工作电压;数字电源
(3)VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压,数字地
对于数字电路来说,VCC是电路的供电电压,VDD是芯片的工作电压(通常Vcc>Vdd),VSS是接地点。

4、C语言数据类型

在这里插入图片描述

5、C语言宏定义

在这里插入图片描述
新名字在左边

6、C语言typedef

在这里插入图片描述
新名字在右边

7、C语言结构体

在这里插入图片描述

typedef struct{
	char x;
	int y;
	float z;
}StructName_t;
//结构体与typedef复用,方便
int main(){
	StructName_t c;
	StructName_t d;
	c.x='A';
	c.y=66;
	c.z=1.23;
	printf("c.x=%c\n",c.x);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

同理GPIO_InitTypeDef GPIO_InitStructure;
结构体用的是地址传递,所以能用->,在GPIO_Init(GPIOB,&GPIO_InitStructure);中传递的也是结构体的地址

8、C语言枚举

在这里插入图片描述
枚举值不是必须赋值给枚举变量,可以随意定义一个变量,把枚举值赋给它,比如int a=TRUE;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/935841
推荐阅读
相关标签
  

闽ICP备14008679号