news 2026/9/3 0:50:19

SysTick 延时与 DWT 延时

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SysTick 延时与 DWT 延时

在 Cortex-M 系列 MCU 中,常见的内核级延时方式主要有SysTick 定时DWT(CYCCNT)定时。两者虽然都能实现延时,但定位和适用场景完全不同。


一、基本概念

  • SysTick
    Cortex-M 内核自带的 24 位定时器,主要用于系统节拍(Tick),通常通过中断实现延时和计时。

  • DWT(CYCCNT)
    Cortex-M 内核调试模块中的CPU 周期计数器,每个 CPU 时钟周期加 1,不依赖中断。


二、相同点

  • 都是 Cortex-M 内核资源
  • 都与 CPU 主频相关
  • 都可用于延时
  • 都不占用普通外设定时器(TIM)

三、主要区别

对比项SysTickDWT
工作方式定时器 + 中断CPU 周期计数
是否中断
精度毫秒级为主微秒级、极高
抖动受中断影响几乎无
系统侵入性
低功耗支持

四、使用场景

适合 SysTick:

  • RTOS 系统节拍
  • 系统毫秒时基
  • 任务调度
  • 长时间延时

适合 DWT:

  • 微秒级延时
  • 驱动层延时
  • 外设初始化时序
  • Bit-bang 通信

五、工程选型结论

SysTick 是“系统的钟表”,用于调度和系统时基
DWT 是“CPU 的秒表”,用于高精度短时延时

在实际项目中通常组合使用:

SysTick → 系统节拍 / RTOS

DWT → 驱动层微秒延时

ps:第一次接触DWT延时的概念,该篇内容仅做简单介绍,由AI辅助整理

附代码(引用郭天祥团队):

#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); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 10:32:07

从零构建工业Agent设备管理体系,资深架构师十年经验倾囊相授

第一章&#xff1a;工业Agent设备管理体系的演进与挑战 随着工业自动化与数字化进程的加速&#xff0c;工业Agent作为连接物理设备与数字系统的智能代理&#xff0c;正在重塑传统设备管理的架构。从早期基于PLC的集中式控制&#xff0c;到如今依托边缘计算与AI模型的分布式自治…

作者头像 李华
网站建设 2026/9/3 0:02:45

datagrip新建oracle连接教程

1.先创建一个oracle用户: 使用sysdba连接 -- SQL*Plus中执行 CONNECT sys/你的sys密码localhost:1521/ORCL AS SYSDBA;如果你忘了sysdba的密码,自己搜重置密码的命令 注意上面的ORCL是oracle实例的名字, 也可能为xe, 需要具体查看你的oracle版本,具体的命令可以问豆包 创建新用…

作者头像 李华
网站建设 2026/9/2 5:58:44

胡良兵《AM》重磅突破:氧气氛热冲击法攻克酸性析氧稳定性世纪难题,性能超群运行超300小时!

导语 质子交换膜水电解制氢技术的“心脏”——酸性析氧催化剂&#xff0c;其活性与稳定性不可兼得的世纪难题迎来重大突破&#xff01;耶鲁大学胡良兵教授团队在材料学顶刊《Advanced Materials》 上发表颠覆性研究成果。该团队开创 “氧气氛高温热冲击” 合成法&#xff0c;成…

作者头像 李华
网站建设 2026/9/1 17:29:56

智能家居Agent场景联动全解析(高阶玩家私藏手册)

第一章&#xff1a;智能家居Agent场景联动全解析在物联网与人工智能深度融合的当下&#xff0c;智能家居Agent已成为实现设备协同、环境感知与用户行为预测的核心组件。通过部署具备自主决策能力的Agent系统&#xff0c;家庭中的照明、温控、安防等异构设备可基于上下文信息实现…

作者头像 李华
网站建设 2026/9/1 21:14:47

思维导图新玩法:My Mind 超详细使用攻略

思维导图新玩法&#xff1a;My Mind 超详细使用攻略 【免费下载链接】my-mind Online Mindmapping Software 项目地址: https://gitcode.com/gh_mirrors/my/my-mind 快速上手 还在为复杂的思维导图工具头疼吗&#xff1f;My Mind 这款免费开源的在线思维导图应用&#x…

作者头像 李华
网站建设 2026/9/1 20:22:32

Trusted Firmware-A 启动流程

Trusted Firmware-A&#xff08;TF-A&#xff09;的调用流程遵循ARM的启动架构规范&#xff0c;通常分为多个阶段&#xff0c;从冷启动开始&#xff0c;逐步将控制权从底层固件转移到上层操作系统。以下是TF-A的典型调用流程&#xff1a;1. Boot ROM (BL1) 位置&#xff1a;固化…

作者头像 李华