基于HAL库的LED流水灯

一、HAL库点亮流水灯

1、用stm32CubeMX创建工程并进行相关配置

安装好stm32CubeMX后,点击File,然后点击New Project创建新的工程。

在这里插入图片描述
然后在弹出来的页面中选择该实验需要用到的芯片为STM32F103C8T6,然后点击start project开始工程
在这里插入图片描述
然后配置SYS,
在这里插入图片描述
接着配置RCC,
在这里插入图片描述
然后是GPIO的配置,该实验选择PA5、PB0、PC14来作为流水灯的输出端口,点击右侧芯片,找到所需要的端口,并将其设置为GPIO_Output,然后修改Pin脚的电平,将其设置为高电平。
在这里插入图片描述
在这里插入图片描述
然后设置时钟,将按钮电亮。
在这里插入图片描述
然后设置工程名,文件路径。
在这里插入图片描述
然后点击Code Generator,进行勾选。
在这里插入图片描述
此时相关的配置已经弄完,之后便可创建打开工程。
在这里插入图片描述
工程打开之后,便进入了Keil,然后就是进行代码的编写。

2、代码编写及编译

在Keil中点击main.c,然后将while(1)循环中添加以下代码。

while (1)
  {
   		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);//PA5红灯亮
		HAL_Delay(1000);//延时1s
		HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);//灯灭
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);//PB0绿灯亮
		HAL_Delay(1000);
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET);//PC14黄灯亮
		HAL_Delay(1000);
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET);
  }

代码更改完成后,点击魔法棒,进行相关设置。
在这里插入图片描述
在这里插入图片描述
然后点击OK便设置好了,之后点击运行生成.hex文件。

3、烧录

将电路连接好后,打开FlyMcu,将文件烧录到电路中。
先将芯片的BOOT0置1,BOOT1置0,然后将文件下载到电路中,然后再将BOOT1置0,手动复位,这样再点击开始编程,电路就开始工作了。
在这里插入图片描述
烧录结果:
在这里插入图片描述

二、采用中断模式控制灯的亮灭

1、按如下设置Debug

在这里插入图片描述

2、点击调试

在这里插入图片描述

3、选择逻辑分析仪

在这里插入图片描述

4、选择要观察的引脚

(1)点击Setup Logic Analy

在这里插入图片描述

(2)添加要观察的引脚

在这里插入图片描述

5、输入(PORTB & 0X00000000)>>0

Display Type选择Bit,依次输入(PORTA & 0X00008000)>>15、(PORTC & 0X00002000)>>13
在这里插入图片描述
在这里插入图片描述

6、运行程序

在这里插入图片描述
在这里插入图片描述

三、总结

LED流水灯实验是嵌入式系统学习中的基础实验之一,它有助于初学者理解如何控制数字输出以创建简单的视觉效果。本次实验基于HAL库,旨在通过控制STM32系列微控制器的GPIO引脚,实现LED流水灯效果。以下是对该实验的总结:

首先,我们学习了HAL库的基本概念,HAL库是STMicroelectronics为STM32系列微控制器提供的一种抽象层,它简化了硬件的访问和控制,使得嵌入式开发更加便捷。通过HAL库,我们可以轻松地配置和控制微控制器的外设,如GPIO。

实验的第一步是配置GPIO引脚。我们使用HAL库提供的函数来初始化和配置LED所连接的引脚,确保它们处于输出模式。HAL库提供了丰富的函数来配置引脚,包括设置引脚的状态、速度和上拉/下拉等属性。

接下来,我们使用循环结构控制LED的状态,以创建流水灯效果。我们可以使用HAL库的函数来设置引脚的状态,从而点亮或熄灭LED。通过延时函数,我们可以控制LED的亮灭时间,从而调整流水灯的速度。

在实验中,我们还学习了如何使用HAL库的函数来处理错误和异常情况。这有助于我们更好地理解如何调试嵌入式系统,并提高代码的鲁棒性。

总结而言,基于HAL库的LED流水灯实验帮助我们掌握了嵌入式系统中的基本概念和技能。我们学会了如何配置GPIO引脚、使用HAL库函数控制外设,以及如何处理错误情况。这些技能对于嵌入式系统开发和微控制器编程都非常重要。通过这个实验,我们能够创建一个简单但令人满意的流水灯效果,这为我们今后更复杂的项目奠定了坚实的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值