DWT硬件延时
1、Cortex-M4内核架构2、硬件延时利用计数功能的硬件进行延时比如单片机片上定时器Timer内核滴答定时器(systick)等__weak void HAL_IncTick(void) { uwTick; } __weak uint32_t HAL_GetTick(void) { return uwTick; } void SysTick_Handler(void) { HAL_IncTick(); } __weak void HAL_Delay(__IO uint32_t Delay) { uint32_t tickstart 0; tickstart HAL_GetTick(); while((HAL_GetTick() - tickstart) Delay); }3、DWT监视点单元数据跟踪硬件延时方案DWT里有一个32位的寄存器叫CYCCNT它是一个向上计数器记录的是内核时钟运行的次数内核时钟跳动一次该计数器就加1如果内核时钟是120MHz那精度就是1/120M 8.3ns而单片机程序的运行时间通常都是微秒级别的所以DWT实现延时的精度是非常高的。要实现DWT延时的功能总共涉及到三个内核寄存器DEMCR 、DWT_CTRL、DWT_CYCCNT分别用于开启DWT功能、开启CYCCNT及获得系统时钟计数值当CYCCNT溢出之后会清0重新开始向上计数。如果内核时钟是120MHz直接使用CYCCNT延时最大值为 232 * 1/120M 36S。注DWT只在Cortex-M3及以上内核中存在。①使能DWT需要向DEMCR寄存器的24位写1寄存器定义位于core_cm4.hCoreDebug-DEMCR ~CoreDebug_DEMCR_TRCENA_Msk; /* 关闭 TRC */CoreDebug-DEMCR | CoreDebug_DEMCR_TRCENA_Msk;/* 打开 TRC */②使能计数器需要向CTRL寄存器的0位写1DWT-CTRL ~DWT_CTRL_CYCCNTENA_Msk; /* 关闭计数功能 */DWT-CTRL | DWT_CTRL_CYCCNTENA_Msk;/* 打开计数功能 */③计数器清零DWT-CYCCNT 0;代码编写#include stdint.h #include gd32f30x.h #include delay.h static uint32_t g_sysClock; /** *********************************************************** * 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; g_sysClock rcu_clock_freq_get(CK_SYS); } /** *********************************************************** * brief 微秒级延时函数 * param nUs最大延时时间( 2^32 / 内核主频 ) * 10^6 us * return *********************************************************** */ void DelayNus(uint32_t nUs) { uint32_t tickStart DWT-CYCCNT; /* 转换为nUs对应的时钟跳动次数*/ nUs * g_sysClock / 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); } } #ifndef _DELAY_H_ #define _DELAY_H_ #include stdint.h /** *********************************************************** * brief DWT初始化配置 * param * return *********************************************************** */ void DelayInit(void); /** *********************************************************** * brief 微秒级延时函数 * param nUs最大延时时间( 2^32 / 内核主频 ) * 10^6 us * return *********************************************************** */ void DelayNus(uint32_t nUs); /** *********************************************************** * brief 毫秒级延时函数 * param nMs延时时间n毫秒 * return *********************************************************** */ void DelayNms(uint32_t nMs); #endif

相关新闻

如何通过5个简单步骤实施HARA

如何通过5个简单步骤实施HARA

确保汽车系统的安全性并非易事。随着现代车辆日益复杂,识别并减轻潜在危险变得比以往任何时候都更加关键。这正是危害分析与风险评估(HARA)发挥作用的地方。 HARA是一种结构化方法,旨在评估风险并制定符合ISO 26262(汽…

2026/7/4 20:41:43 阅读更多 →
合同管理系统的实施-开发费用问题

合同管理系统的实施-开发费用问题

此前《从纸质台账到数智中台:合同管理系统的演进与未来》一文,梳理了合同管理系统的发展脉络。从功能迭代角度来看,合同管理系统是依托 OA 无纸化办公、企业信息化的基础需求,逐步拆分独立出来的专业化管理软件。在专业化演变进程…

2026/7/4 20:39:43 阅读更多 →
如何免费获取国家中小学智慧教育平台电子课本PDF:智能解析下载方案

如何免费获取国家中小学智慧教育平台电子课本PDF:智能解析下载方案

如何免费获取国家中小学智慧教育平台电子课本PDF:智能解析下载方案 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。…

2026/7/4 20:37:42 阅读更多 →

最新新闻

Obsidian-skills:为AI代理注入Obsidian超能力,开启智能知识管理新纪元

Obsidian-skills:为AI代理注入Obsidian超能力,开启智能知识管理新纪元

Obsidian-skills:为AI代理注入Obsidian超能力,开启智能知识管理新纪元 【免费下载链接】obsidian-skills Agent skills for Obsidian. Teach your agent to use Obsidian CLI and open formats including Markdown, Bases, JSON Canvas. 项目地址: htt…

2026/7/4 21:38:07 阅读更多 →
Touch WX开发常见问题解答:新手必看的避坑指南

Touch WX开发常见问题解答:新手必看的避坑指南

Touch WX开发常见问题解答:新手必看的避坑指南 【免费下载链接】touchwx 小程序组件化解决方案。官网:https://www.wetouch.net/wx.html 项目地址: https://gitcode.com/gh_mirrors/to/touchwx Touch WX是一套完全免费的微信小程序开发框架&#…

2026/7/4 21:34:04 阅读更多 →
Spectre在机构级量化交易中的应用:大规模数据处理实战案例

Spectre在机构级量化交易中的应用:大规模数据处理实战案例

Spectre在机构级量化交易中的应用:大规模数据处理实战案例 【免费下载链接】spectre GPU-accelerated Factors analysis library and Backtester 项目地址: https://gitcode.com/gh_mirrors/spe/spectre Spectre作为一款GPU加速的因子分析库和回测工具&#…

2026/7/4 21:34:04 阅读更多 →
BigFunctions快速入门:10分钟学会在BigQuery中调用公共函数

BigFunctions快速入门:10分钟学会在BigQuery中调用公共函数

BigFunctions快速入门:10分钟学会在BigQuery中调用公共函数 【免费下载链接】bigfunctions Supercharge BigQuery with BigFunctions 项目地址: https://gitcode.com/gh_mirrors/bi/bigfunctions 想要快速掌握BigFunctions的强大功能吗?这篇终极指…

2026/7/4 21:32:02 阅读更多 →
CANN/hccl代码示例集

CANN/hccl代码示例集

HCCL Code Examples 【免费下载链接】hccl 集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann…

2026/7/4 21:30:02 阅读更多 →
CANN/mat-chem-sim-pred PID阶跃响应特征算法

CANN/mat-chem-sim-pred PID阶跃响应特征算法

PidStepResponseFeatures Algorithm 【免费下载链接】mat-chem-sim-pred 面向工业领域,聚焦计算仿真、预测两大核心场景,构建面向流程工业"机理数据"双轮驱动的领域计算层,推动AI for Science在材料化学领域的深度应用。 项目地址…

2026/7/4 21:30:02 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻