DWT硬件延时

发布时间:2026/8/25 9:17:50

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

相关新闻

简单大话筛微信小程序游戏源码

简单大话筛微信小程序游戏源码

2026/8/24 23:36:09

简介: 简单大话筛微信小程序游戏源码 源码下载:https://download.csdn.net/download/m0_66047725/92879719 图片:

SonicNote聆犀AI录音卡 × Obsidian:让每一次对话,自动成为你的知识资产

SonicNote聆犀AI录音卡 × Obsidian:让每一次对话,自动成为你的知识资产

2026/8/23 20:51:30

最新版本: SonicNote Sync 插件 v1.1.7 适用平台: Obsidian 桌面版 v0.15.0(Windows / macOS / Linux) 一句话概括: 录音卡录制 → 妙记 App AI 转写总结 → 一键同步到 Obsidian,全程自动化 快速演示视频 …

基于YOLOv5的道路损坏实时检测系统开发实践

基于YOLOv5的道路损坏实时检测系统开发实践

2026/8/22 7:49:10

1. 项目概述:基于YOLOv5的道路损坏识别系统道路损坏检测一直是交通基础设施维护中的痛点问题。传统人工巡检方式效率低下且成本高昂,而基于计算机视觉的自动化检测方案正在逐步改变这一现状。我们开发的这套系统采用YOLOv5目标检测框架,能够实…

Oemer 乐谱照片如何变 MusicXML?事件驱动生成机制完整详解

Oemer 乐谱照片如何变 MusicXML?事件驱动生成机制完整详解

2026/8/25 9:14:59

Oemer 乐谱照片如何变 MusicXML?事件驱动生成机制完整详解 【免费下载链接】oemer End-to-end Optical Music Recognition (OMR) system. Transcribe phone-taken music sheet image into MusicXML, which can be edited and converted to MIDI. 项目地址: https:…

Go也能算农历!Carbon农历、儒略、波斯、希伯来历法转换完全指南

Go也能算农历!Carbon农历、儒略、波斯、希伯来历法转换完全指南

2026/8/25 9:14:59

Go也能算农历!Carbon农历、儒略、波斯、希伯来历法转换完全指南 【免费下载链接】carbon A simple, semantic and developer-friendly time package for golang 项目地址: https://gitcode.com/gh_mirrors/carbon44/carbon Go 也能算农历吗?答案是…

实习生如何撰写专业总结报告:结构化方法与量化技巧

实习生如何撰写专业总结报告:结构化方法与量化技巧

2026/8/25 9:14:59

1. 项目背景与痛点解析去年带实习生时发现一个现象:超过80%的同学在撰写实习总结时,都会对着空白文档发呆半小时以上。有的最终交上来的是流水账式的日报合集,有的则堆砌了大量专业术语却看不出实际成长。这种现象背后反映的是三个核心痛点&a…

跨时钟域处理(CDC)原理与工程实践指南

跨时钟域处理(CDC)原理与工程实践指南

2026/8/25 9:14:59

1. 什么是跨时钟域处理?它到底在解决什么问题?“跨时钟域处理”这六个字,乍一听像芯片设计里的黑话,但其实它直指数字电路中最基础、也最危险的现实问题:两个不共享同一节奏的模块,怎么安全地传递数据&…

专业实习总结撰写指南:结构与技巧

专业实习总结撰写指南:结构与技巧

2026/8/25 9:14:59

1. 项目背景与痛点分析刚结束实习的大学生常常面临一个尴尬局面:明明积累了丰富的实践经验,却在撰写实习总结时无从下笔。这种现象在商科、工科等实践性强的专业尤为常见。根据我对300份实习总结的批改经验,约78%的初稿存在结构混乱、重点模糊…

Arduino ESP32 烧录失败怎么办:三层排查+三条旁路救援的完整快速指南

Arduino ESP32 烧录失败怎么办:三层排查+三条旁路救援的完整快速指南

2026/8/25 9:04:59

Arduino ESP32 烧录失败怎么办:三层排查三条旁路救援的完整快速指南 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 点下「上传」,编译一路绿灯&am…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/24 19:53:32

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/24 19:56:07

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/24 21:16:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

2026/8/25 0:04:34

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

2026/8/25 0:04:35

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

2026/8/25 0:04:35

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…