一、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库函数控制外设,以及如何处理错误情况。这些技能对于嵌入式系统开发和微控制器编程都非常重要。通过这个实验,我们能够创建一个简单但令人满意的流水灯效果,这为我们今后更复杂的项目奠定了坚实的基础。