STM32基于HAL库流水灯实验

本文介绍了使用STM32单片机和HAL库控制LED流水灯的实验过程,包括搭建开发环境、编写代码实现LED周期闪烁,以及通过波形观察验证程序效果。实验旨在理解单片机工作原理和外设资源应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验背景:
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灭

(三)烧录运行结果
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流水灯及Keil环境下的仿真运行,观察其波形,又进一步加深了我对这部分知识的理解与运用。实操过程中,还是有些小问题,经过上网查询以及同学们的帮助下,完成了实验。
参考资料:
https://blog.youkuaiyun.com/weixin_56102526/article/details/120877293
https://blog.youkuaiyun.com/weixin_46129506/article/details/120780184
 

内容概要:文章介绍了DeepSeek在国内智能问数(smart querying over data)领域的实战应用。DeepSeek是一款国内研发的开源大语言模型(LLM),具备强大的中文理解、推理和生成能力,尤其适用于企业中文环境下的智能问答、知识检索等。它具有数据可控性强的特点,可以自部署、私有化,支持结合企业内部数据打造定制化智能问数系统。智能问数是指用户通过自然语言提问,系统基于结构化或非结构化数据自动生成精准答案。DeepSeek在此过程中负责问题理解、查询生成、多轮对话和答案解释等核心环节。文章还详细展示了从问题理解、查询生成到答案生成的具体步骤,并介绍了关键技术如RAG、Schema-aware prompt等的应用。最后,文章通过多个行业案例说明了DeepSeek的实际应用效果,显著降低了数据使用的门槛。 适合人群:从事数据分析、企业信息化建设的相关从业人员,尤其是对智能化数据处理感兴趣的业务和技术人员。 使用场景及目标:①帮助业务人员通过自然语言直接获取数据洞察;②降低传统BI工具的操作难度,提高数据分析效率;③为技术团队提供智能问数系统的架构设计和技术实现参考。 阅读建议:此资源不仅涵盖了DeepSeek的技术细节,还提供了丰富的实战案例,建议读者结合自身业务场景,重点关注DeepSeek在不同行业的应用方式及其带来的价值。对于希望深入了解技术实现的读者,可以进一步探索Prompt工程、RAG接入等方面的内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值