零基础学STM32(五)-流水灯实验

本项目讲解所用工程均使用stm32f103C8T6芯片HAL库版本。

目录

原理讲解

初始化配置


原理讲解

本节内容我们就上一节LED灯闪烁实验的基础讲解一下流水灯实验。流水灯就是一串LED灯,它们一个接一个地亮起来,然后一个接一个地灭掉,看起来就像水在流动一样,所以叫流水灯。这些灯泡是由微控制器控制的,由微控制器来告诉每个灯泡什么时候该亮,什么时候该灭,通过这样的控制,就形成了漂亮的光流动效果。

初始化配置

接下来我们利用Cubemx进行HAL库的初始化配置,建立工程的部分我们这里就直接快速完成,不了解的同学可以看我之前的新建工程部分零基础学STM32(二)-新建工程-CSDN博客

创建完工程后首先是时钟的配置,将时钟设置为外部高速时钟。

再配置相应时钟树,将总频设置为32MHz。

设置完时钟树,我们初始化对应的IO口用于控制高低电平的输出,为了实验现象明显我们需要多设置打开几个IO口并外接LED灯。图中,可以看到,我们这里设置为GPIO_Output(输出模式),绿色即为设置完成的引脚,之后再将几个GPIO引脚的初始状态设置为Low(低电平),Output Push Pull(推挽输出),No pull_up and no pull_down(浮空模式),最大速度为Low(最低),就此IO口的初始化就算完成了。

紧接着输出工程,将必要的内容勾选和填写一下即可。注意!!!文件路径中不要出现中文

打开工程即可编写代码

直接在主函数中运用闪烁电路所学习的函数即可,不知道相关函数的同学可以查看上一节内容零基础学STM32(四)-LED灯闪烁实验-CSDN博客,我们这里还是只需要使用输出函数。

HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

我们控制第一个LED灯点亮然后熄灭,紧接着第二个LED灯点亮然后熄灭,依次往复就可以达到流水灯效果,流水灯的流动速度我们可以通过增减延时来进行控制。

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
HAL_Delay(500);

我们把这段代码加入到他的while循环中让他循环往复

再进行编译下载即可

硬件方面我们需要将STM32最小板插入面包板,然后用杜邦线引出VCC,将LED灯一端接入VCC,另一端接入对应的IO口,通上电即可。接线图如下

以上就是流水灯实验的全部内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彧佑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值