keysking,哥,你NB了,求你继续更新,粉丝什么都会做的
P1---LED电灯
GPIO引脚,又被称呼为通用引脚,作用就是在STM32内核的控制下,接收电压,或者输出电压。
接收电压
下图为接收电压。 3.3V和0V之间有了电势差,产生了电流,LED灯就此亮了起来。
释放电压
在8大模式之一的推挽输出模式中,可以进行电压的输出,可以输出3.3V的高电平,也可以输出0V的低电平
P2---电灯宗师
闪烁太快了,需要延迟
需要延迟函数的情况:下面是一个对GPIO引脚,GPIO7号引脚,调为高电平(第一句),调为低电平的代码。目的是实现LED灯的闪烁。
出现了问题,这样的写的代码,闪烁的太快(高点电平变化的太快)。人眼是看不出来闪烁的。
使用延迟函数
总结:前面两个都是做的控制GPIO口输出高低电平,模式是GPIO_OUTPUT
P3---按键控制小灯亮起
KEY1分析
按键KEY1,电路图,以下对按键K1进行分析
GPIO的浮空输入模式
浮空输入模式状态下,PB12处相当于一个很大的电阻,根据电阻越大分压越大,此时10K的电阻处几乎没有电压。PB12处,几乎吃到了电源的所有压强。此时读取PB12处的电平值,是高电平3.3V。(下图1)。
当按键按下的时候,电路接通,此时PB12和GND相连接,电压为低电平0V.
综上: 按键key,按下PB12是低电平。不按PB12是高电平
什么是上拉(加个上拉电阻)
上拉:使用电源将GPIO口处的电平拉高的操作,称为上拉。(一般上拉操作需要一个电阻配合,因为不能直接将芯片引脚和电源相连接。)
具体如何完成上拉操作的:
此时PB12通过电阻直接连到了一个电源上,并且上面有一个电阻。浮空输入模式状态下,PB12处相当于一个很大的电阻,根据电阻越大分压越大,此时10K的电阻处几乎没有电压。PB12处,几乎吃到了电源的所有压强。此时读取PB12处的电平值,是高电平3.3V。(下图1)。
什么是抖动
在按键按下的的时候,是有人无法察觉的“高频率的,电平的高低变化”,如下图
消除抖动
按键两端加电容式是为了消除抖动。硬件消除抖动,有一定概率无法完全消除抖动,需要软件延时100ms,通过这种软件消除抖动的方式进行消抖。至于为什么是100ms。因为抖动一般100ms就会消失
KEY2分析
如图所示,KEY2没有上拉电阻,所以需要设置对应的PB13为“上拉模式”,而不再是“浮空输入模式”。设置为上拉模式之后,就跟KEY一样了。按下前PB13是高电平,按下后PB13是低电平(PB13直接和GND相连接)
即当电路没有上拉电阻的时候,就使用STM32内置的上拉电阻,把输出模式调整以下就可以。
P5---GPIO内部的那些事(重点)
成员介绍
①GPIO内部电路原理图
②芯片内部电路保护
芯片内部电路是比较脆弱的,所以I/O引脚接的有两个保护二级管。当电压高于3.3V的时候,就走上面的VDD,让电源网络承受。当电压小于0V的时候,就走下面的的VSS,让GND承受。
注意此结构智能抵御一瞬间的电压波动,若长时间把把较大的电压导入I/O口,依然会损坏芯片。
有一些I/O引脚是可以承受5V的高电压作为高电平的。
③寄存器
寄存器是程序与硬件电路连接的桥梁
输出
输出部分电路简图
④推挽输出
优点:作为电源输出,3.3V电压;缺点:只能输出3.3V电压
⑤开漏输出
优点:配合外部电路的电源,更加灵活;缺点:高电平其实是高阻态,无法输出电流
⑥复用-推挽/开漏输出
从上图黄线进来的控制就叫:复用-推挽/开漏输出
⑦输出模式分为两类,普通/复用推挽/开漏输出
输入
输入模块电路简图
浮空输入:
VDD和VSS都不开
上拉输入:
VDD开
下拉输入:
VSS开
模拟输入:
不走TTL,读取具体的电压值,不让TTL转化为高低电平
P6---初识中断以及外部中断的使用
P7---深入中断
中断处理模块图
外部中断线有16个
即EXTI0~EXTI1,分别对应与其编号相同的GPIO口
eg:PA0,PB0,PC0,PD0对应EXTI0;
eg:PA1,PB1,PC1,PD1对应EXTI1;
中断触发方式
以下降沿为例
配置为下降沿寄存器开启,上升沿寄存器关闭。
当检测到下降沿信号的时候,向后面的“或门”发送高电平信号(1)。(或门的性质是,有1就1)
若是GPIO12发来的,那么请挂起寄存器的第12位就置为1,并且给(与门)一个高电平。
此时若GPIO12被设定为了GPIO_EXYI12。那么中断频闭寄存器中的对应位也是1,此时两个1凑齐,才向后面的NVIC控制器发送信号。进行中断响应
中断向量和对应的中断处理函数
中断向量中,只有EXTI1~EXTI4有对应的中断处理向量,EXIT5~EXTI10公用一个,EXTI11~EXTI15公用一个
抢占优先级和响应优先级别
两个中断同时发生
两个中断先后发生
P8---串口初识(轮询模式)
这些都是串口
TTL单片机中最常用的串口
为什么两个设备要共地(GND)
把两个设备的参考电势拉到同一个水平线上。即统一对高低电平的标准
如何在电脑上看大STM32发来的信息
需要”串口调试助手“。注意串口助手只是一个可视化的软件,具体的“电脑到STM32”以及“STM32到电脑”之间的相互传递,则需要在cubeIDE里面具体的去写一下
P9---串口原理与中断模式的收发
轮询模式的发送端
CPU不断查询发送数据寄存器(TDR)是否将数据都送给发送移位寄存器了
CPU不断查询“发送数据寄存器”,直到数据全部都“转移”给发送移位寄存器。或者用时超过我们设定的超时时间
轮询模式的接收端
“接收移位寄存器” 每拿到一帧数据,就发给”接收数据寄存器“
CPU不断查询“接收数据寄存器”,有数据就“搬走”,给我们设定的用于接收数据的变量。直到全部搬走或者到达“超市时间”
所以CPU就不断在这里“轮询”
所以这种模式下无论是接收端,还是发送端,CPU都是不断一轮一轮的去“查询”寄存器,而无暇顾及其他的任务。我门称这种CPU一直忙碌的状态为“堵塞”