STM32基于HAL库流水灯实验

实验背景:
LED流水灯是一种由多个LED灯珠按照一定规律排列和控制的电子装置。在各种显示场合中,LED流水灯常常用来展示动态效果,如广告牌、舞台灯光等。此外,LED流水灯在教育、科研等领域也有着广泛的应用,可以帮助人们理解单片机的工作原理和电路设计。
实验目的:
本实验的主要目的是探究LED流水灯的控制方式,了解单片机的内部资源和外设库的使用方法。通过实验,希望能够达到以下目标:

掌握基于标准外设库的LED流水灯程序设计方法;
学会利用单片机内部资源进行LED流水灯的控制;
掌握电路的基本连接方式,学会根据原理图进行硬件搭建;
分析实验结果,理解电路连接和程序执行的效果。

实验原理:
LED流水灯的控制原理可以通过单片机外设库和内部资源来实现。外设库提供了对单片机I/O口的操作函数,如延时、计数器、中断等。内部资源包括存储器、定时器、串口等,可以用来存储程序代码、控制LED灯珠的亮灭时间以及实现通信等功能。电路连接方面,需要将LED灯珠的正极连接到单片机I/O口,负极接地,同时串联适当的电阻以保护LED灯珠。

一、搭建STM32的开发环境
(一)安装jdk
由于STM32CubeMX是Java实现的,需要安装jdk环境。
jdk官网下载链接:
https://www.oracle.com/java/technologies/javase-downloads.html

(二)安装STM32CubeMX
1.下载地址:
https://www.st.com/en/development-tools/stm32cubemx.html
2.安装完成后打开

二、HEL库GPIO端口3只LED红绿灯的周期闪烁
(一)CubeMX建项目
1.安装固件库
打开STMCubeMX
在这里插入图片描述
确定安装
在这里插入图片描述
2.新建项目
回到STMCubeMX的主界面,创建新项目:
在这里插入图片描述
选择芯片STM32F103C8
在这里插入图片描述
在这里插入图片描述
RCC选择
在这里插入图片描述
选择端口输出设置,选择需要的端口,点击设置GPIO_OUTPUT,我选择的是PC13,PA15,PB0
在这里插入图片描述
在这里插入图片描述

Project Manager设置
在这里插入图片描述
在这里插入图片描述
创建项目完毕,然后用Keil打开

(二)main.c代码修改
在这里插入图片描述
1.在while(1)中输入以下代码

    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);  // 灯1亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);  // 灯1灭
	  
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);  // 灯2亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);  // 灯2灭
	  
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);  // 灯3亮
	HAL_Delay(1000); // 延时1s
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);  // 灯3灭

2.点击编译生成hex文件
在这里插入图片描述
(三)烧录运行结果
1.烧录工具
硬件工具:

st-link v2
STM32F103C8开发板
LED灯
线路若干

软件工具:
keil c51

2.结果展示
在这里插入图片描述
在这里插入图片描述
三、波形观察
1.仿真环境设置
debug设置
在这里插入图片描述
2.点击魔法棒,选择target,晶振选择为8MHZ:
(注意:这个选项在软件仿真中起到很重要的作用,如果选择错误,那么波形一定是错误的,因为时间不准确)
在这里插入图片描述
3.点击调试
在这里插入图片描述
4.设置完成后,开启调试模式,打开逻辑分析仪:
在这里插入图片描述
5.选择要观察的引脚
①点击Setup Logic Analy
②添加要观察的引脚
在这里插入图片描述
6.输入(PORTB & 0X00000000)>>0、Display Type选择Bit,依次输入(PORTA & 0X00008000)>>15、(PORTC & 0X00002000)>>13
在这里插入图片描述
7.点击全速运行;执行一段时间后,点击停止按钮即可:
另:点击in或out设置Grid的大小为1s,勾选signal info和cursor可以设置起始线看到相关信息:
在这里插入图片描述
8.波形图
运行一段时间后,点击暂停;
为了观察一下延时函数是否准确:将鼠标移动至第一个波形的一条下降沿处,并点击,锁定此刻的时间;再将鼠标移动至第二条波形的下降沿处与其重叠,观察二者的时间:
在这里插入图片描述
总结
通过这次实验,在实践中理解了STM32cubemx的基础原理知识,通过stm32cubeMX的开发环境,直接运用了HAL库编程实现了实验要求让LED灯亮起让我受益良多。
参考资料:
https://blog.csdn.net/weixin_56102526/article/details/120877293
https://blog.csdn.net/weixin_46129506/article/details/120780184

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值