【蓝桥杯嵌入式】第三章 LED流水灯

2e20ec19f86b99b8df08cb88658ae966.png

第一节 硬件解读  

先看看原理图:

         b0f12ff90cb1762ae1d2b206787e9b83.png

和普通的开发板不同,蓝桥杯嵌入式的开发板通过一个74HC573芯片之后,连接到LED和限流电阻。那么74HC573是什么呢?我们可以通过数据手册找到他的真值表,如下:

a1842611d9942d84e37f0e4d8b95cce8.png

从上表我们可以得到一个结论,只有在OE#和LE分别为L和H的时候,Output才会随Input变化而变化,所以我们控制了OE#和LE,只要其中一个不符合条件,不管Input是什么,Output的状态都不会改变,从而保护了Output的状态,得到锁存的效果,如果大家需要补充这里的知识,建议大家去看数电的知识,或者百度搜索“锁存器”。

从上面的原理图我们可以看出,OE#已经是低电平了,那么就只有LE了,也就是PD2引脚,当PD2引脚是高电平,单片机就可以控制LED了;如果是低电平,就无法控制了。例如,我们让LD1点亮的流程应该是:单片机控制PD2为高电平,打开锁存器,让单片机可以控制LED->单片机控制PC8引脚为低电平,让LD1亮->单片机控制PD2为低电平,关闭锁存器,让单片机无法控制LED。

第二节 CubeMX配置  

第一步:双击打开STM32CubeMX,,如下图,新建项目。注意:新建项目本教程只介绍一次,以后项目的建立不在重复。

343670538c610099737e5133e311eec7.png

第二步:在英文状态下搜索芯片:STM32G431RBT6,选后选择对应的芯片即可。注意:搜索芯片时,确保输入法在英文的状态下;选择芯片的时候,可以选择后缀带有“TR”的,2者芯片完全一致,不影响比赛。

c70c26dbd4338868a3d8438ec442d3a6.png

第三步:配置下载器,如下图。注意:本教程下载器配置是配置一遍,后续教程将不再重复。

1628ede057fa27b83203293683dc442e.png

第四步:配置STM32的时钟,注意:本教程时钟配置是配置一遍,后续教程将不再重复。如下:

8ab9e8848580d94fe7c68d3a30a2f435.png

c04a5b182d423cb2191b2630a81a7f20.png

第五步:选择项目信息,如下配置:2处是项目的名字;3处是项目的路径;4处是编译器;5处是编译器版本。注意:项目路径不能包含中文等其他非法字符;编译器一定要选择MDK-ARM;编译器版本一定要选择v5。后续教程将不在重复本步操作。

8352a0a5f89ee0349baf4347676d105c.png

第六步:如下图,将3,4处的按钮勾选,点击5处,生成Keil工程。注意:后续教程将不在重复本步操作。

11aaa65c372a9c6b3036474ff2f8d74d.png

第七步:点击上步的5处之后,会有一个对话框,意思分别是:打开项目文件夹位置;打开项目;关闭本窗口。注意:这里灵活处理,打开文件夹和项目都可以。后续教程将不在重复本步操作。

aa5bb409dbd7af0bfbeb51edde80c1e8.png

第八步:注意,以上操作是建立工程必备的操作,以后的教程不在重复。现在重新打开STM32CubeMX,开始配置LED的相关引脚。

ed2bb0c84b81e8e9fe262f1c70078b0b.png

ca131042d04954541eae1b2e2f1998c2.png

905dd3d499ce786af6427fd66f2c2710.png

第九步:重新生成代码。

第三节 MDK代码  

第一步,编译代码,检查STM32CubeMX生成的代码是否正常。如下图,点击1处编译,之后在2处可以看见:0错误,0警告。注意:后续教程将不在重复本步操作。

72095e8efce3e29f0cfae31f89a8ad55.png

第二步:配置下载器,这一步很多步骤,希望大家仔细一点,一步一步来。注意:不要忘记点击“OK”,后续教程将不在重复本步操作。

fe23ae07378e81511d0b7c595c182092.png

第三步:新建.h文件。在“项目名/Core/Inc”中新建一个“Zsdz.h”的文件。注意:后续教程将不在重复本步操作。

0abe800623fa9387c4f2a6ea9df668e7.png

第四步:新建.c文件。在“项目名/Core/Src”中新建一个“Zsdz.c”的文件。注意:后续教程将不在重复本步操作。

f121bca7783ff17cdb8b96bd7f437222.png

第五步:添加“Zsdz.c”文件。点击1处,可以看见项目的所有的文件,点击2,3处,准备添加“Zsdz.c”文件,但是发现没有“Zsdz.c”文件,如下图:需要返回到上一层文件目录中,点击4处。注意:后续教程将不在重复本步操作。

3fb7bd0f3d0b75fdba625dc8d8b94263.png

如下图:虽然没有发现“Zsdz.c”文件,但是我们看见了Core文件夹,还记得我们的“Zsdz.c”文件保存在哪吗?在“项目名/Core/Src”中,所以我们进入到“/Core/Src”,找到“Zsdz.c”文件即可。注意:后续教程将不在重复本步操作。

9a2b34548fc86fa58d32f3b3e687928a.png

第六步:如下图,代表添加成功。注意:后续教程将不在重复本步操作。

2bb6e7c00ea7dd2fd1bdb75db39be86c.png

第七步:注意:如果利用STM32CubeMX生成MDK项目,“Zsdz.c”文件可能会从MDK项目中移除,请重新添加。

第八步:编写“Zsdz.c”文件的代码,如下:注意:后续教程将不在重复本步操作。

8f99d131d81e937b620c2c6cfea3cddf.png

第九步:进入到“Zsdz.h”文件,右键,选择“Go to Headerfile‘Zsdz.h’”。注意:后续教程将不在重复本步操作。

50dc638ea6f51269f140266e86c2f7ec.png

第十步:编写“Zsdz.h”文件的代码,如下:注意:后续教程将不在重复本步操作。

d1ae3d07fd948571566a588ecedf60ac.png

第十一步:在Main中添加“Zsdz.h文件”,如下:注意:只可以添加在“USER CODE END”和“USER CODE BEGIN”之间,否则等下次利用STM32CubeMX生成MDK项目时,不在“USER CODE END”和“USER CODE BEGIN”之间的代码会被覆盖。

cfc41fca11415a19ba66be56e7c3475d.png

第十二步:编写LED的函数模板,具体如下:注意:不要忘记声明gpio.c文件。注意:后续教程将不在重复本步操作。

15c48261cee85c6e0cddc1d1dfebb9bd.png

f604caf7a085963236cbe64ee73e7bf5.png

0dcda8ffc6d7de1b76d4cb99e69ae508.png

972e2be550eb4ac88e621ba9e120a281.png

第十三步:以上就是LED所有的封装函数了,我们在“Zsdz.h”文件中声明他们,如下图:注意:后续教程将不在重复本步操作。

67fabdc6da4f2f5ba00d876cc6711379.png

第十四步:现在随便在main函数中写几个,看看效果。

e9dcd396a0924eb4df505a8d808c9b8c.png

34dc328b24f7b3f2e4ba98ad68f737ca.png

第十五步:编译检查代码并下载。点击1处编译代码,之后在2处可以看见0错误0警告。代码没有问题之后,点击3处下载代码,在4处看见Flash Load finished at xxxx,就证明代码下载成功。注意:后续教程将不在重复本步操作。

a47b0b610114947b5b20157914f5d0c0.png

第四节 实验现象  

注意:请用USB线连接电脑与开发板,注意是CN2口。

现象:500ms为间隔的流水灯。

来源:撞上电子微信公众号

版权:东莞市东城墨竹公子电子工作室

日期:2023.08.29

==========

往期回顾:

【笔记】单片机头文件的顺序会让程序报错?

F103程序移植到F407的经验小结

STM32输出可调频率与占空比的PWM

STM32CubeMX之串口接收不定长数据

==========

bea4e22d1d87bec3bc81a02caa6faead.png

72f4947dac81666ba3ebbc36e1bee73f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值