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


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);
}

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

8、C语言枚举

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

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嗨!对于学习STM32的笔记,我可以给你一些基本的指导。首先,你需要了解STM32是一系列由STMicroelectronics公司开发的32位微控制器。它们具有广泛的应用领域,包括嵌入式系统、物联网和工业自动化等。 在学习STM32时,你可以按照以下步骤进行: 1. 硬件准备:获取一块STM32开发板,例如STM32F4 Discovery或NUCLEO系列。这些开发板通常带有一些外设和接口,便于学习和实验。 2. 开发环境搭建:下载并安装Keil MDK或者IAR Embedded Workbench等集成开发环境(IDE)。这些IDE提供了编译器、调试器和其他工具,方便你编写和调试STM32的代码。 3. 学习基本知识:了解STM32的体系结构、寄存器和外设等基本知识。可以通过阅读相关的参考手册、数据手册和应用笔记来深入了解。 4. 编写代码:使用C/C++语言编写STM32的应用程序。你可以使用相关的库函数来简化开发过程,如标准外设库(StdPeriph Library)或者新的STM32Cube库。 5. 调试和测试:使用调试器和仿真器来调试和测试你的代码。这些工具能够帮助你单步执行代码、观察寄存器和内存的状态,以及检查外设的操作。 6. 实践项目:尝试一些小型的项目,如LED闪烁、按键输入和PWM输出等,以巩固你的学习成果。随着经验的积累,你可以尝试更复杂的项目,如通信接口、传感器应用和无线通信等。 记得在学习过程中多查阅官方文档、参考资料和在线论坛,以便解决遇到的问题。祝你学习STM32的旅程愉快!如果你有具体的问题,欢迎随时向我提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值