使用STM32F407xx的GPIO引脚实现跑马灯效果的详细步骤

1、使用Keil创建一个新工程

2、在弹出的对话框,填写工程的名字,例如工程名字为demo_led

3、为保存的工程,选择对应的芯片

4、为当前工程,添加相应的库函数

 

 5、若库函数添加成功,则显示当前工程目录树

6、在当前工程目录下,先创建main.c

 

7、添加头文件和设置优化等级

 

8、开始写跑马灯程序

 (1)初始化led灯
void led_init()
{//定义结构体GPIO_InitTypeDef GPIO_InitStructure1;//使能AHB1总线上指定外设的硬件时钟,其实就是对外设进行供电 (如果该外设不使用,可以关闭其硬件时钟,降低功耗)RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF, ENABLE);GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//9 10号引脚GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_OUT;//输出模式GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_NOPULL;//推挽类型,Push PullGPIO_InitStructure1.GPIO_OType = GPIO_OType_PP;//不使能上下拉电阻GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_2MHz;//引脚工作速度GPIO_Init(GPIOF, &GPIO_InitStructure1);//进行初始化GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;//13 14号引脚GPIO_Init(GPIOE, &GPIO_InitStructure1);//进行初始化//初始完硬件之后,默认关闭状态GPIO_WriteBit(GPIOE, GPIO_Pin_13 |  GPIO_Pin_14, Bit_SET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 |  GPIO_Pin_10, Bit_SET);}
(2) 设置延时
int32_t  delay_ms(uint32_t nms)
{uint32_t t = nms;uint32_t temp;while(t--){SysTick->CTRL = 0; 			SysTick->LOAD = 21000-1; 	SysTick->VAL = 0; 			SysTick->CTRL = 1; 			while(1){temp=SysTick->CTRL;//检测count flagif(temp & 0x00010000)break;//检测系统定时器是否意外关闭	if((temp & 0x1)==0)return -1;		}}	SysTick->CTRL = 0; 	return 0;
}
(3) 实现跑马灯效果循环
void led()
{GPIO_WriteBit(GPIOE, GPIO_Pin_14 , Bit_SET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 , Bit_RESET);delay_ms(100);GPIO_WriteBit(GPIOF, GPIO_Pin_10 , Bit_RESET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 , Bit_SET);delay_ms(100);GPIO_WriteBit(GPIOF, GPIO_Pin_10 , Bit_SET);GPIO_WriteBit(GPIOE, GPIO_Pin_13 , Bit_RESET);delay_ms(100);GPIO_WriteBit(GPIOE, GPIO_Pin_13 , Bit_SET);GPIO_WriteBit(GPIOE, GPIO_Pin_14 , Bit_RESET);delay_ms(100);
}
(4)源程序
#include "stm32f4xx.h"void led_init()
{//定义结构体GPIO_InitTypeDef GPIO_InitStructure1;//使能AHB1总线上指定外设的硬件时钟,其实就是对外设进行供电 (如果该外设不使用,可以关闭其硬件时钟,降低功耗)RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF, ENABLE);GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//9 10号引脚GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_OUT;//输出模式GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_NOPULL;//推挽类型,Push PullGPIO_InitStructure1.GPIO_OType = GPIO_OType_PP;//不使能上下拉电阻GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_2MHz;//引脚工作速度GPIO_Init(GPIOF, &GPIO_InitStructure1);//进行初始化GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;//13 14号引脚GPIO_Init(GPIOE, &GPIO_InitStructure1);//进行初始化//初始完硬件之后,默认关闭状态GPIO_WriteBit(GPIOE, GPIO_Pin_13 |  GPIO_Pin_14, Bit_SET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 |  GPIO_Pin_10, Bit_SET);}int32_t  delay_ms(uint32_t nms)
{uint32_t t = nms;uint32_t temp;while(t--){SysTick->CTRL = 0; 			SysTick->LOAD = 21000-1; 	SysTick->VAL = 0; 			SysTick->CTRL = 1; 			while(1){temp=SysTick->CTRL;//检测count flagif(temp & 0x00010000)break;//检测系统定时器是否意外关闭	if((temp & 0x1)==0)return -1;		}}	SysTick->CTRL = 0; 	return 0;
}void led()
{GPIO_WriteBit(GPIOE, GPIO_Pin_14 , Bit_SET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 , Bit_RESET);delay_ms(100);GPIO_WriteBit(GPIOF, GPIO_Pin_10 , Bit_RESET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 , Bit_SET);delay_ms(100);GPIO_WriteBit(GPIOF, GPIO_Pin_10 , Bit_SET);GPIO_WriteBit(GPIOE, GPIO_Pin_13 , Bit_RESET);delay_ms(100);GPIO_WriteBit(GPIOE, GPIO_Pin_13 , Bit_SET);GPIO_WriteBit(GPIOE, GPIO_Pin_14 , Bit_RESET);delay_ms(100);
}int  main()
{led_init();while(1){led();}
}

9、如果要在实体板子上运行效果需要配置以下环境

10、程序最终效果 

跑马灯

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/467205.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

_浅谈单片机的gcc优化级别__以双音频信号发生器为例

一、简介 gcc有多种优化级别,一般不选择的情况下,IDE默认是按照-Og或这-O2优化的。 以gcc编译器为例,浅谈一下优化级别,我们常见的优化一般是指gcc的-O2、-Og。除此之外,gcc还有-Os等一系列优化,链接器也有…

用JavaScript、Nodejs写一个本地tcp服务,用于前端WebSocket调试

效果: 准备工作: 新建一个文件夹,在根目录安装依赖: npm install ws express 依赖介绍: WS是一个轻量级、高效的WebSocket库,适用于Node.js环境。 express 是一个流行的Node.js Web应用程序框架。 新…

企业常见的主数据管理挑战及解决方案

在当今高度数字化的商业环境中,数据已成为企业决策、运营和战略规划的核心。主数据管理(MDM)作为管理核心业务数据的一种方式,帮助企业确保其关键数据在整个组织中保持一致、准确和可信。然而,许多企业在实施主数据管理…

Python http打印(http打印body)flask demo(http调试demo、http demo、http printer)

文章目录 代码解释 代码 # flask_http_printer.pyfrom flask import Flask, request, jsonify import jsonapp Flask(__name__)app.route(/printinfo, methods[POST]) def print_info():# 分隔符separator "-" * 60# 获取请求头headers request.headers# 获取 JS…

从无音响Windows 端到 有音响macOS 端实时音频传输播放

以下是从 Windows 端到 macOS 端传输音频的优化方案,基于上述链接中的思路进行调整: Windows 端操作 安装必要软件 安装 Python(确保版本兼容且已正确配置环境变量)。安装 PyAudio 库,可通过 pip install pyaudio 命令…

用 Python 从零开始创建神经网络(二)

用 Python 从零开始创建神经网络(二) 引言1. Tensors, Arrays and Vectors:2. Dot Product and Vector Additiona. Dot Product (点积)b. Vector Addition (向量加法) 3. A Single Neuron with …

python爬虫自动库DrissionPage保存网页快照mhtml/pdf/全局截图/打印机另存pdf

目录 零一、保存网页快照的三种方法二、利用打印机保存pdf的方法 零 最近星球有人问如何使用页面打印功能,另存为pdf 一、保存网页快照的三种方法 解决方案已经放在星球内:https://articles.zsxq.com/id_55mr53xahr9a.html当然也可以看如下代码&…

现代Web开发:WebSocket 实时通信详解

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 现代Web开发:WebSocket 实时通信详解 现代Web开发:WebSocket 实时通信详解 现代Web开发:WebS…

Hadoop完全分布式环境搭建步骤

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 大数据与数据分析_夏天又到了的博客-CSDN博客 本文介绍Hadoop完全分布式环境搭建方法,这个Hadoop环境用于安装配置Spark。假设读者已经安装好Visual Box 7.0.6虚拟环境与一个CentOS 7虚拟机(如果…

133.鸿蒙基础01

鸿蒙基础 1.自定义构建函数1. 构建函数-[Builder ](/Builder )2. 构建函数-传参传递(单向)3. 构建函数-传递参数(双向)4. 构建函数-传递参数练习5. 构建函数-[BuilderParam ](/BuilderParam ) 传递UI 2.组件状态共享1. 状态共享-父子单向2. 状态共享-父子双向3. 状态共享-后代组…

如何保证kafka生产者数据可靠性

ack参数的设置: 0:生产者发送过来的数据,不需要等数据落盘应答 假如发送了Hello 和 World两个信息,Leader直接挂掉,数据就会丢失 生产者 ---> Kafka集群 一放进去就跑 数据可靠性分析:丢数 1&#…

业务模块部署

一、部署前端 1.1 window部署 下载业务模块前端包。 (此包为耐威迪公司发布,请联系耐威迪客服或售后获得) 包名为:业务-xxxx-business (注:xxxx为发布版本号) 此文件部署位置为:……

后台管理系统窗体程序:文章管理 > 文章列表

目录 文章列表的的功能介绍: 1、进入页面 2、页面内的各种功能设计 (1)文章表格 (2)删除按钮 (3)编辑按钮 (4)发表文章按钮 (5)所有分类下拉框 &a…

Windows10/11开启卓越性能模式 windows开启卓越性能电源模式 工作电脑开启卓越性能模式 电脑开启性能模式

Windows10/11开启卓越性能模式 windows开启卓越性能电源模式 工作电脑开启卓越性能模式 电脑开启性能模式 1、所要用到的激活工具2、开启电脑卓越性能模式Windows11Windows10在电源模式中选择卓越性能模式 3、将系统版本切换为 工作站版本 1、所要用到的激活工具 KMS激活工具(…

D62【python 接口自动化学习】- python基础之数据库

day62 SQL 基础 学习日期:20241108 学习目标:MySQL数据库-- 131 SQL基础和DDL 学习笔记: SQL的概述 SQL语言的分类 SQL的语法特征 DDL - 库管理 DDL - 表管理 总结 SQL是结构化查询语言,用于操作数据库,通用于绝大…

计算机图形学 实验二 三维模型读取与控制

目录 一、实验内容 二、具体内容 (在实验2.3的基础上进行修改) 1、OFF格式三维模型文件的读取 2、三维模型的旋转动画 3、键盘鼠标的交互 4、模型的修改 三、代码 一、实验内容 读取实验提供的off格式三维模型,并对其赋色。利用鼠标和键盘的交互&#xff0…

Redis 中 Bitmap 原理和应用

Bitmap Redis中的Bitmap(位图)是一种较为特殊数据类型,它以最小单位bit来存储数据,我们知道一个字节由 8个 bit 组成,和传统数据结构用字节存储相比,这使得它在处理大量二值状态(true、false 或…

Springboot3.3.5 启动流程(源码分析)

一图搞懂 SpringBoot 启动流程(清晰明了): createWebServer (ServletWebApplicationContext)流程 finishBeanFactoryInitialization(ServletWebApplicationContext)Bean装配流程 真正干活的&am…

CSS实现图片3D立体效果

概述 本文主要讲述如何通过 CSS 简单的设置就可以实现图片的 3D 立体效果。 3D 立体效果 当鼠标移入某一个图片上时,其余图片会像该图片倾斜。 具体实现 静图如下: 倒影效果图片会有一个倒影效果,其代码如下: <style>img {-webkit-box-reflect: below 1px linea…

java: 无法访问org.springframework.web.bind.annotation.RequestMapping

一、报错问题 java: 无法访问org.springframework.web.bind.annotation.RequestMapping 二、原因分析 SpringBoot使用了3.0或者3.0以上&#xff0c;因为Spring官方发布从Spring6以及SprinBoot3.0开始最低支持JDK17。所以仅需要将SpringBoot版本降低为3.0以下即可&#xff08;或…