收藏 分享(赏)

15.1、 流水灯.pdf

上传人:始于喜欢终于深爱 文档编号:2185597 上传时间:2020-05-24 格式:PDF 页数:6 大小:289.54KB
下载 相关 举报
15.1、 流水灯.pdf_第1页
第1页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、 LED流水灯实验流水灯实验 ? 流水灯试验的意义与作用流水灯试验的意义与作用 作为开发板硬件经典入门实验,非流水灯实验莫属(流水灯也叫跑马灯)。神舟IV号开发板板 载了4个LED指示灯,LED1,LED2,LED3和LED4。本实验将通过教你如何控制这四个灯实现交替闪 烁的流水灯效果。 该实验的关键在于如何控制STM32的IO口输出不同的电平。通过这一节的学习,您将初步掌握 STM32基本IO口的使用,迈出STM32学习的第一步。 ? 实验原理实验原理 前面已经说过,跑马灯的关键实际上就是如何控制STM32处理器的GPIO接口作为输出接口,输出 指定的电平信号。那么,这一节,我们就主要了解S

2、TM32的GPIO的原理和控制方法。 STM32 的 IO 口可以由软件配置成 8 种模式: ? 模拟输入 ? 输入浮空 ? 输入下拉 ? 输入上拉 ? 开漏输出 ? 推挽输出 ? 复用功能开漏输出 ? 复用功能推挽输出 对应到STM32库文件中的定义如下 在我们使用一个GPIO之前,我们一般需要对GPIO管脚的时钟,和GPIO管脚模式以及速率进行设 定。 STM32的GPIO端口在作为输出时,可以软件配置端口最大支持的时钟速率,有以下几种: ? 输出模式,最大时钟速率10MHz ? 输出模式,最大时钟速率2MHz ? 输出模式,最大时钟速率50MHz 对应到STM32库中的定义如下: 为了降

3、低STM32处理器的功耗,可以依据实际的需求,选择合适的时钟速率,GPIO口支持的最大 时钟速率越低,它产生的功耗也越低。 在对STM32的GPIO管脚有了一定的了解后,我们看一个完整的GPIO端口初始化的例子。 为程序便于大家修改和移植为程序便于大家修改和移植,此处使用宏定义来定义指示灯的管脚等: 下面的LED_config函数是初始化神舟IV号STM32开发板的4个LED灯对应的GPIO端口初始化的子函 数。 关于IO口更详细的介绍,请参考开发板光盘里的【中文】STM32F系列ARM内核32位高性能微 控制器参考手册V10_1.pdf第105页8.1节。 ? 硬件设计硬件设计 神舟 IV

4、号开发板上总共有 4 个是用户 LED 指示灯,由 4 个 GPIO 管脚分别控制 LED 灯的亮灭, 当 GPIO 管脚输出低电平时,LED 指示灯亮。反之,当 GPIO 管脚输出高电平时,LED 指示灯灭。这 四个 LED 指示灯分别由 PD2、PD3、PD4 和 PD7 控制。 下图为LED原理图,其中GPIO管脚上串的电阻,主要起限流作用,防止电流过大损坏LED和GPIO 口。 GPIO管脚与对应的LED灯关系如下: LED灯 LED灯对应的GPIO LED1 PD2 LED2 PD3 LED3 PD4 LED4 PD7 图表 1 LED 指示灯电路 ? 软件设计软件设计 神 舟 IV

5、 号 LED 流 水 灯 实 验 位 于神 舟IV号 开 发 板 光 盘 的源 码 STM32F10x_StdPeriph_Lib_V3.3.0.rar Project1.LED流水灯(神舟IV号)目录。 进入1.LED流水灯(神舟IV号) EWARMv5 目录后,双击Project.eww可以打开IAR工程,以下为 工程文件中主要代码的解释与说明。 为程序便于大家修改和移植为程序便于大家修改和移植,此处使用宏定义来定义指示灯的管脚等: 下面的LED_config函数是初始化神舟IV号STM32开发板的4个LED灯对应的GPIO端口初始化的子 函数。 以下为一些底层的函数:Led_Turn_o

6、n_all函数就是点亮所有Led,其中调用的GPIO_ResetBits就是 STM32F10x_StdPeriph_Lib_V3.3.0库的标准函数,作用是将指定的一个或多个管脚输出低电平,前面 讲过只要Led管脚输出低电平,指示灯就会发亮。 Led_Turn_off_all 函 数 就 是 熄 灭 所 有 Led , 其 中 调 用 的 GPIO_SetBits 也 是 STM32F10x_StdPeriph_Lib_V3.3.0库的标准函数,作用是将指定的一个或多个管脚输出高电平,前面 讲过只要Led管脚输出高电平,指示灯就会熄灭。 Led_Turn_on函数就是实现根据传入的参数点亮特

7、定的Led,并熄灭其他所有Led。 Delay_ARMJISHU 函数流水灯使用的延时函数,简单的 For 循环 有了以上的子函数,MAIN主函数就会比较简单: MAIN函数一开始就初始化LED的GPIO,然后“上电或复位后所有的神舟LED闪烁一下”这样的 目的可以检测4个指示灯是否正常可用。最后进入While循环,KeyNum变量每次加一,将KeyNum对4 求余数(也可以说取模)得到的1-3数字就是点亮对应的LED,这样便达到了流水灯的预期目的。 ? 下载与验证下载与验证 神舟IV号光盘源码目录包含本实验的工程源码,在神舟IV号光盘源码01、LED流水 灯.rarProject1、LED流

8、水灯EWARMv5STM32F107VC-ARMJISHUExe目录下的流水灯.hex文件即为前 面我们分析的流水灯实验编译好的固件,我们可以直接将固件下载到神舟IV号开发板中,观察运行效 果。 如果使用JLINK下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。下载固件到神舟IV 号开发板小节进行操作。 如果使用USB下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行操作。 如果使用串口下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行操作。 如果在IAR开发环境中,下载编译好的固件或者在线调试,请按错误!未找到引用源。错误!错误!未找到引用源。错误! 未找到引用源。未找到引用源。小节进行操作。 如果在MDK开发环境中,下载编译好的固件或者在线调试,请按错误!未找到引用源。错误!未错误!未找到引用源。错误!未 找到引用源。找到引用源。小节进行操作。 ? 实验现象实验现象 将固件下载在神舟 IV 号 STM32 开发板后,可以看到神舟 IV 号开发板的四个 LED 灯(LED14) 轮流闪亮,实现我们所说的流水灯效果。4 个 LED 的具体位置如下图中红色区域所示。

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 技术方案

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报