ARM基于DWT实现硬件延时(GD32)

软件延时的缺点

软件延时的精度差,受系统主频影响,调教困难

硬件延时

DWT数据跟踪监视点单元硬件延时

硬件延时实现代码

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"int main(void)
{    // 初始化延时函数DelayInit();// 使能RCU时钟rcu_periph_clock_enable(RCU_GPIOA);// 配置引脚输出频率gpio_init( GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_2MHZ, GPIO_PIN_8);while(1){gpio_bit_set(GPIOA, GPIO_PIN_8); DelayNms(1000);gpio_bit_reset(GPIOA, GPIO_PIN_8);DelayNms(1000);} }

 

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

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

相关文章

谷歌Google搜索广告开户流程与费用?

谷歌Google作为全球领先的搜索引擎&#xff0c;其广告平台——Google Ads&#xff0c;无疑是企业捕获潜在客户的黄金钥匙。想要在广阔的互联网海洋中精准航行&#xff0c;了解Google搜索广告的开户流程与费用至关重要。通过云衔科技的专业服务&#xff0c;让您的谷歌Google广告…

【数据分析面试】44.分析零售客户群体(Python 集合Set的用法)

题目 假设你是一家在线零售商的数据库管理员&#xff0c;需要分析两类客户的数据。一个集合 purchased_customers 包含在最近一次促销活动中购买了商品的客户ID&#xff0c;另一个集合 newsletter_subscribers 包含订阅了新闻通讯的客户ID。编写一个函数 analyze_customers&am…

《云原生安全攻防》-- 构建云原生攻防场景

在本节课程中&#xff0c;我们将学习云原生攻防场景的构建。为了研究云原生安全攻击案例&#xff0c;我们需要搭建一个云原生攻击测试环境&#xff0c;以便进行攻防研究和攻击手法的复现。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; 构建云原生攻防场景&#xf…

ModuleNotFoundError: No module named ‘openpyxl‘的解决方案

问题描述&#xff1a; ModuleNotFoundError: No module named ‘openpyxl’ 这个错误表示你的 Python 环境中没有安装 openpyxl 这个模块。openpyxl 是一个用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的 Python 库。 解决方案&#xff1a; 要解决这个问题&#xff0c;你需…

深入理解MySQL三大日志:redo log、binlog、undo log

前言 MySQL是一个功能强大的关系型数据库管理系统&#xff0c;它的高可靠性、高性能和易用性使得它成为众多企业和开发者的首选。在MySQL内部&#xff0c;为了保证数据的完整性、恢复能力和并发性能&#xff0c;设计了一套复杂的日志系统。其中&#xff0c;redo log、bin log和…

云服务器和物理机该怎样分别呢

随着网络的不断发展&#xff0c;服务器的类型也在以不同的方式更新。现在云服务器的兴起占据了很大一部分市场&#xff0c;物理机的市场份额受到了很大的冲击。物理机和云服务器有什么区别&#xff1f;如何选择适合自己需求的&#xff1f;虽然物理服务器和云服务器都是服务器&a…

618洗地机如何选?洗地机哪个牌子好?洗地机详解

快节奏的生活方式使得清洁工作成为许多人难以应付的任务。不过&#xff0c;洗地机的出现为这个问题提供了完美的解决方案。洗地机以其强劲的吸力和高效的清洁功能&#xff0c;能够快速清理地面的污渍和灰尘&#xff0c;极大地提升了清洁效率。不仅如此&#xff0c;洗地机的操作…

OFDM 802.11a的FPGA实现(十六)长训练序列:LTS(含Matlab和verilog代码)

目录 1.前言2.原理3.Matlab生成长训练序列4.硬件实现5.ModelSim仿真6.和Matlab仿真结果对比 原文链接&#xff08;相关文章合集&#xff09;&#xff1a; OFDM 802.11a的xilinx FPGA实现 1.前言 在之前已经完成了data域数据的处理&#xff0c;在构建整个802.11a OFDM数据帧的时…

Linux初学1

Unix unix和LInux的关系 LInux的吉祥物tux Nginx Directoryhttps://mirror.iscas.ac.cn/centos/7/isos/x86_64/redhat7 网络连接 桥接模式&#xff1a;虚拟系统可以和外部系统通讯&#xff0c; 你自家里折腾当然桥接没问题&#xff0c;如果一个教室里全都用桥接&#xff1…

2024年CSPM考试时间线梳理!

最近后台有朋友在问今年CSPM的考试安排&#xff0c;给大家整理一下&#xff0c;需要的朋友认真查看&#xff0c;不要错过考试。2024年5月12日举行了本年度第二次CSPM3级考试~接下来的考试安排如下&#xff1a; 1&#xff09;2024年CSPM考试安排 本次考试出成绩时间——2024年6…

【大数据】计算引擎MapReduce

目录 1.概述 1.1.前言 1.2.大数据要怎么计算&#xff1f; 1.3.什么是MapReduce&#xff1f; 2.架构 3.工作流程 4.shuffle 4.1.map过程 4.2.reduce过程 1.概述 1.1.前言 本文是作者大数据系列专栏的其中一篇&#xff0c;专栏地址&#xff1a; https://blog.csdn.ne…

特征提取与深度神经网络DNN

OpenCV中的深度神经网络&#xff08;DNN&#xff09;模块&#xff0c;现在已经支持图像风格迁移、图像分类、对象检测、语义分割、实例分割、图像变换等。 只支持推理&#xff0c;不支持训练 支持主流的深度学习框架生成模型 推荐使用pytorch/onnx/tensorflow ResNet18的图像…

无代码无国界:我们正在走向软件安全的狂野西部吗?

我们使用的几乎所有东西都是基于代码构建的&#xff0c;从汽车到智能冰箱再到门铃。在企业中&#xff0c;无数的应用程序保持设备、工作流程和操作的运行。因此&#xff0c;当早期的无代码开发平台于 2010 年推出时&#xff0c;承诺为公民开发人员提供更易于访问的应用程序开发…

Redis加入系统服务,开机自启

vi /etc/systemd/system/redis.service i [Unit] Descriptionredis-server Afternetwork.target [Service] Typeforking #使用&#xff08;/usr/local/bin/redis-server&#xff09;运行&#xff08;/usr/local/src/redis-6.2.6/redis.conf&#xff09; ExecStart/usr/local/…

解决GitHub提交后不显示自己的头像 显示另一个没见过的账号?

问题说明 最近换了几台电脑开发项目&#xff0c;提交到github&#xff0c;看了下提交记录&#xff0c;怎么冒出来不是我的账号头像&#xff1f; 什么鬼i 原因分析 github是按照你注册时候填的邮箱来查找账号&#xff0c;并显示在提交记录上面的。如果账号找不到头像就出不来…

【Day3:JAVA运算符、方法的介绍】

目录 1、运算符1.1 赋值运算符1.2 比较运算符1.3 逻辑运算符1.3.1 逻辑运算符概述1.3.2 逻辑运算符分类1.3.3 短路的逻辑运算符 1.4 三元运算符1.5 运算符优先级 2、方法2.1 方法介绍2.2 方法的定义和调用格式2.2.1 方法的调用2.2.2 带参数方法的调用2.2.3 带返回值方法的调用2…

具身智能论文(四)

目录 1. Alexa Arena: A User-Centric Interactive Platform for Embodied AI2. EDGI: Equivariant Diffusion for Planning with Embodied Agents3. Efficient Policy Adaptation with Contrastive Prompt Ensemble for Embodied Agents4. Egocentric Planning for Scalable E…

OceanBase集群如何进行OCP的替换

有OceanBase社区版的用户提出替换 OCP 管控平台的需求。举例来说&#xff0c;之前的OCP平台采用单节点&#xff0c;然而随着OceanBase集群的陆续上线和数量的不断增多&#xff0c;担心单节点的OCP可能面临故障风险&#xff0c;而丧失对OceanBase集群的管控能力。另此外&#xf…

so-vits-svc:AI翻唱,语音克隆

前言 这个项目是为了让开发者最喜欢的动画角色唱歌而开发的&#xff0c;任何涉及真人的东西都与开发者的意图背道而驰。 项目地址&#xff1a;https://github.com/svc-develop-team/so-vits-svc/blob/4.1-Stable/README_zh_CN.md 安装 可以自行配置&#xff0c;应该也不难 …

Java05基础 数组

Java05数组 一、数组 数组指的是一种容器&#xff0c;可以用来存储同种数据类型的多个值。 1、数组的静态初始化 初始化&#xff1a;就是在内存中&#xff0c;为数组容器开辟空间&#xff0c;并将数据存入容器中的过程 1.1 数组定义格式 //格式一 数据类型[] 数组名 …