ARM单片机实现流水灯(GD32)

 根据上图可知使用的引脚分别是PA8,PE6,PF6流水灯功能的实现要分别初始化这几个引脚

流水灯实现

编写流水灯代码

LED.C

#include "gd32f30x.h"                   // Device header
#include "Delay.h"
// 初始化LED灯
void LED_Init(void){// 使能RCU时钟rcu_periph_clock_enable(RCU_GPIOA);// 配置引脚输出频率gpio_init( GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_8);// 初始化GPIOE的引脚rcu_periph_clock_enable(RCU_GPIOE);// 配置引脚输出频率gpio_init( GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_6);// 初始化GPIOE的引脚rcu_periph_clock_enable(RCU_GPIOF);// 配置引脚输出频率gpio_init( GPIOF, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_6);
}// 实现循环流水灯的功能
void LED_Cycle(void){DelayInit();while(1){gpio_bit_set(GPIOA, GPIO_PIN_8); DelayNms(1000);gpio_bit_reset(GPIOA, GPIO_PIN_8);DelayNms(1000);gpio_bit_set(GPIOE, GPIO_PIN_6); DelayNms(1000);gpio_bit_reset(GPIOE, GPIO_PIN_6);DelayNms(1000);gpio_bit_set(GPIOF, GPIO_PIN_6); DelayNms(1000);gpio_bit_reset(GPIOF, GPIO_PIN_6);DelayNms(1000);}}

LED.H

#ifndef _LED_H_
#define _LED_H_
// led灯初始化
void LED_Init(void);
// 实现循环流水灯的功能
void LED_Cycle(void);#endif

Delay.c

#include <stdint.h>
#include "gd32f30x.h"/**
***********************************************************
* @brief DWT初始化配置
* @param
* @return 
***********************************************************
*/
void DelayInit(void) 
{/* 关闭 TRC */CoreDebug->DEMCR &= ~CoreDebug_DEMCR_TRCENA_Msk;/* 打开 TRC */CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;/* 关闭计数功能 */DWT->CTRL &= ~DWT_CTRL_CYCCNTENA_Msk;/* 打开计数功能 */DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;/* 计数清零 */DWT->CYCCNT = 0;
}/**
***********************************************************
* @brief 微秒级延时函数
* @param nUs,最大延时时间( 2^32 / 内核主频 ) * 10^6 us 
* @return 
***********************************************************
*/
void DelayNus(uint32_t nUs)
{uint32_t tickStart = DWT->CYCCNT;/* 转换为nUs对应的时钟跳动次数*/nUs *= (rcu_clock_freq_get(CK_AHB) / 1000000);/* 延时等待 */while ((DWT->CYCCNT - tickStart) < nUs);
}/**
***********************************************************
* @brief 毫秒级延时函数
* @param nMs,延时时间n毫秒
* @return 
***********************************************************
*/
void DelayNms(uint32_t nMs)
{for (uint32_t i = 0; i < nMs; i++){DelayNus(1000);}
}

Delay.h

#ifndef _DELAY_H_
#define _DELAY_H_
void DelayInit(void);
void DelayNus(uint32_t nUs);
void DelayNms(uint32_t nMs);
#endif

main.c

#include <stdint.h>
#include "gd32f30x.h"
#include "Delay.h"
#include "LED.h"int main(void)
{    DelayInit();LED_Init();LED_Cycle();while(1){} }

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

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

相关文章

6 Shell脚本的条件测试与比较

已知:$?执行命令后 返回0 表示真 返回1 表示假 6.1.1条件测试 常用的语法 条件表达式语法 说明 1 test <测试表示式> test命令与后面表达式最少一个空格 等同于2 2 [ <测试表示式> ] []边界与内容左右2边最…

记录一次pods 导入 SocketRocket库的经历

折腾一上午&#xff0c;brew 安装成功了 cococapod 然后项目启动下载一个SocketRocket库 下载成功后总是报错&#xff1a; 睡了2个多小时&#xff0c;我在qq就交流群里求助&#xff1a; 终于把项目管理&#xff0c;在命令行里执行这句&#xff1a; open chat_app.xcworkspace…

Linux进程间通信 pipe 实现线程池 命名管道 实现打印日志 共享内存代码验证 消息队列 信号量

文章目录 前言管道匿名管道 pipe测试管道接口 --> 代码验证管道的4种情况管道的5种特征 线程池案例代码实现&#xff1a;ProcessPool.ccTask.hpp检测脚本makefile 命名管道代码演示&#xff1a;makefilenamedPipe.hppserver.ccclient.cc 实现日志Log.hpp 共享内存共享内存原…

JavaWeb后端基础知识(2)包括(MyBatis)

JavaWeb后端基础知识&#xff08;2&#xff09; 目录 JavaWeb后端基础知识&#xff08;2&#xff09; 一. MyBatis 1.什么是Mybatis? 2.步骤 &#xff08;1&#xff09;准备工作 &#xff08;2&#xff09;引入Mybatis的相关依赖&#xff0c;配置Mybatis &#xff08;…

串口属性中的BM延时计时器问题

如果使用程序修改则需要修改注册表对应位置如下 第一个示例&#xff08;217&#xff09; 第二个示例&#xff08;219&#xff09; 需要注意的事情是修改前必须点查看串口名称&#xff08;例如上图是com5&#xff09; 程序修改&#xff1a; 有没有办法以编程方式更改USB <…

【力扣】63.不同路径 II

原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 目录 1.题目描述 2.思路分析 3.代码实现 1.题目描述 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试…

unity通过路径找到特定对象并获取指定类型组件的泛型方法

/// <summary>/// 通过路径找到指定类型的组件/// </summary>/// <param name"path">path: 指定要查找的组件所在的GameObject的路径</param>/// <param name"parent">parent: 指定查找的GameObject的父对象&#xff0c;默认…

uniapp管理后台编写,基于uniadmin和vue3实现uniapp小程序的管理后台

一&#xff0c;创建uniAdmin项目 打开开发者工具Hbuilder,然后点击左上角的文件&#xff0c;点新建&#xff0c;点项目。如下图。 选择uniadmin&#xff0c;编写项目名&#xff0c;然后使用vue3 记得选用阿里云服务器&#xff0c;因为最便宜 点击创建&#xff0c;等待项目创…

Codeforces Round 605 (Div. 3) A~D

本人水平不高&#xff0c;开这个专栏主要是督促自己补题&#xff0c;有些题对目前的我来说还比较难&#xff0c;还补不动&#xff0c;等以后能力上来了再补。。。 原题链接&#xff1a;Dashboard - Codeforces Round 605 (Div. 3) - Codeforces 目录 A. Three Friends B. Sn…

Linux端口状态含义(未完

前言 在面试或者企业实战中常见的命令 那就是查询端口命令是哪个 1. 前沿知识 查询端口命令&#xff1a;lsof -i 查询端口的状态&#xff1a;netstat 命令参数说明-tTCP端口-uUDP端口-p进程表示符和程序名称-n显示IP 常用的netstat结合grep进行精准查询 添加链接描述 添…

C# 快速把List<string>集合转换成一个字符串

在C#中&#xff0c;要将List<string>类型的集合转换成一个单一的字符串&#xff0c;其中各元素由特定的分隔符连接&#xff0c;通常推荐使用String.Join()方法。 简单的示例&#xff1a; 使用for循环 代码如下&#xff1a; using System; using System.Collections.G…

【Linux:lesson1】的基本指令

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux课程学习 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f697;打开Xshell&#xff0c;登陆root…

初识java--javaSE(3)--方法,递归,数组,

文章目录 一 方法的使用1.1 什么是方法&#xff1f;main方法注意事项 1.2 方法的调用嵌套调用在方法调用时形参与实参的关系&#xff1a; 1.3 方法的重载方法重载的意义&#xff1f;总结方法重载&#xff1a;方法签名&#xff1a; 二 递归什么是递归&#xff1f;递归的精髓&…

蛋糕店做配送小程序的作用是什么

蛋糕烘焙除了生日需要&#xff0c;对喜吃之人来说往往复购率较高&#xff0c;除线下实体店经营外&#xff0c;更多的商家选择线上多种方式获客转化、持续提高生意营收&#xff0c;而除了进驻第三方平台外&#xff0c;构建品牌私域自营店铺也同样重要。 运用【雨科】平台搭建蛋…

ABAP跨client的RFC调用

1、SM59配置连接 2、创建需要调用的函数&#xff0c;ZGET_TM_LIST&#xff0c;开启远程启用模块 3、新建调用程序 DATA:L_MSG TYPE C,LSH(30) TYPE C. DATA:IT_ZSTM_LIST TYPE STANDARD TABLE OF ZSTM_LIST WITH HEADER LINE.CALL FUNCTION ZGET_TM_LIST DESTINATION ZTEST_R…

C# 判断Access数据库中表是否存在,表中某个字段是否存在

在C#中判断Access数据库中某个表是否存在以及该表中某个字段是否存在&#xff0c;可以通过以下步骤实现&#xff1a; 判断表是否存在 可以使用ADO.NET中的OleDbConnection.GetOleDbSchemaTable方法来获取数据库的架构信息&#xff0c;并检查特定的表是否存在。 using System…

【回溯 网格 状态压缩】52. N 皇后 II

本文涉及知识点 回溯 网格 状态压缩 LeetCode52. N 皇后 II n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 示例 1&#xff1a; 输入&#x…

python3如何安装bs4

在python官网找到beautifulsoup模块的下载页面&#xff0c;点击"downloap"将该模块的安装包下载到本地。 将该安装包解压&#xff0c;然后在打开cmd&#xff0c;并通过cmd进入到该安装包解压后的文件夹目录下。 在该文件目录下输入"python install setup.py&quo…

信息系统架构模型_3.企业数据交换总线

1.企业数据交换总线 实践中&#xff0c;还有一种较常用的架构&#xff0c;即企业数据交换总线&#xff0c;即不同的企业应用之间进行信息交换的公共通道&#xff0c;如图1所示。 图1 企业数据交换总线架构 这种架构在大型企业不同应用系统进行信息交换时使用较普遍&am…

前端笔记-day05

文章目录 01-结构伪类选择器02-结构伪类选择器-公式用法03-伪元素选择器04-盒子模型-组成05-盒子模型-边框线06-盒子模型-单方向边框线07-盒子模型-内边距08-盒子模型-padding多值写法09-盒子模型-尺寸计算10-盒子模型-版心居中11-清除默认样式12-元素溢出overflow13-外边距合并…