☰
STM32--点亮LED小灯
2026/10/28 1:49:22 网站建设 项目流程

1.引言
诶,这个博主不是学C语言的吗,怎么跑来学单片机了?其实我一开始想学C++方向的,但最近颇有感触,就是当我看视频的时候,就刷到一些相关作品的视频,瓦力机器人,仿生蝴蝶,无人机,它们满足了我对小时候玩具的幻想,小时候我非常渴望一款遥控赛车,遥控飞行器,当我看着一些小朋友玩耍的时候,眼里真的在放光。可惜,我从小到大都没有拥有属于自己的遥控玩具。但渐渐长大后,却慢慢离这些玩具远去了。但在大学,我或许能将小时候的梦得到好的结局,不是使用的方式,而是从0到1的生产。所以嵌入式我来了。我会从宏观到微观(不是指物理学上的微观)来讲解我完成的项目。

2.准备
硬件:面包板,单片机(STM32F03C8T6),杜邦线,电阻,ST-LINK,LED小灯。
软件:STM32CubeMX,keil MDK, vscode(暂时不使用)
材料:相应单片机的数据手册和参考手册(意法半导体)

3.电路搭建

在此图片中,你会发现似乎没有电源啊,是的我这里还没有接呢。如果你仔细观察单片机的右侧,就能看到一些小字样 GND SWCLK SWD 3V3,这个3V3就是3.3v的意思可以接电源,而GND就是接地,那么我们就可以构建一个完整的回路了。我们的单片机有电流了,但从哪出去呢,注意看左上角的导线,在它的下面有一个特殊针脚上面标注的也是3V3,那么你的电流就可以从这里流出来,最后从普通引脚(LED短针脚下面的)流回GND。
我们搭建电路还是有一些小细节的,我们在接线的时候要离指针多一格的距离,避免靠的太近导致相触短路,然后板子可能就烧毁了。(其实本博主拿的就是烧坏的板子做演示呢,我怀疑我的板子可能就是这样坏的)

其实大家可能还是不明白STM32是怎么实现通过写代码来控制LED点亮的。而这种软硬协同的功能实现就是单片机的魅力。我们不禁产生疑问了,这些信息是怎么传输的,怎么存储的?

4.数据的传输与存储
事实上,数据的传输的秘密就藏在SWDIO的插口上,ST-LINK就可以把数据送进芯片,至于数据的存储就放在内存或者flash中。其实我已经简化了这个过程,其中还有多个步骤,途径多个外设。我拿deepseek的图以供大家学习


当然我们只是简单了解,在这不做深度学习。但当我们可以看到这小小的芯片有很多其他的东西,这些小家伙都有大用。当我们有这框架你是否能更好的理解了呢?

5.代码是如何控制电流实现LED小灯的点亮
想要知道这其中的操作逻辑就必须先了解MCU中的其中一个片上外设GPIO

5.1 GPIO是什么,它的作用是什么
GPIO的全称叫做 General Purpose Output,通用输入输出口,简单点说:芯片上可以由软件自由配置用途的引脚(当然它不止引脚,在其中包含了一些复杂的电路)。

想要了解GPIO的功能就必须要了解GPIO对应的电路图。

我在这放一个雷霆大图着实吓人,其实我们要了解的并不多,我们暂且只需要了解输出缓冲电路。我们知道点亮小灯必须要实现两端有电压差,所以控制小灯亮灭,就是控制电压的变化,如果我们能创建一个可以接受代码内容然后在硬件层面上实现控制电压变化的元件就好了,那么我们的MOS管就来了,在推挽输出当中,当寄存器发出1,那么P-MOS管导通,那么vDD和指针连通,而阵脚外部也有电压,而且都是3.3v(一般情况),那么就没有电位差,没有压降,所以小灯熄灭。那么N-MOS管的原理也能明白1了。

故此我就在硬件上讲解完怎么点亮小灯的。但是我们软件层面还没有介绍呢。

6.代码层面理解小灯的亮灭逻辑
使用STM32CubeMX一键生成代码,你就就会看到巨长的代码,巨多的文件,不用管那么多,大部分都是HAL库给你封装的代码。






OK,我们简单浏览就能看懂这段代码了,WritePin不就是书写引脚吗,给它一个配置吗。参数呢,GPIO有很多你选的是哪个呢,哪个指针,输出什么电平,reset就是输出高电平,set就是输出低电平,其实本质上就是控制mos管。如果你转到定义,GPIO_PIN_RESEYT等于0,另一个等于1。HAL_Delay呢,就像我们C语言的delay,就暂时理解为单片机不工作500ms就可以了。这样实现的效果就是小灯闪烁了。

自此,我们就大致上完成了小灯的点亮。事实上,我们还有很多东西还是不理解的,代码和硬件都是如此,我会在下期,详细讲解我们的片上外设GPIO,并且实现小灯的更多操作。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询