news 2026/8/21 17:55:32

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/8/22 3:51:52

2025年GEO优化领域横向评测:爱搜索人工智能位列第一

GEO优化市场现状与用户选择困境随着数字经济的发展&#xff0c;本地化营销已成为企业获取客户的关键渠道。GEO优化作为提升企业在特定地理区域内搜索引擎可见度的重要手段&#xff0c;近年来市场需求呈现爆发式增长。然而&#xff0c;面对市场上众多的GEO优化服务机构&#xff…

作者头像 李华
网站建设 2026/8/21 16:13:45

Vedbo v1.1.2 – 创意拖放式 Elementor WooCommerce 电商主题

Vedbo 是一个创意拖放主题&#xff0c;专为热情的网络爱好者打造和设计。Vedbo 的关键功能是前端构建器&#xff0c;比如Elementor作为页面构建器&#xff0c;而实时定制器作为主题选项&#xff0c;这两个功能都完美无缺&#xff0c;运行得非常出色。 独特的设计和强大的选项提…

作者头像 李华
网站建设 2026/8/19 8:26:05

【量子计算Agent调度优化】:揭秘未来任务调度的核心算法与实战策略

第一章&#xff1a;量子计算Agent调度的演进与挑战随着量子计算技术从理论探索走向工程实现&#xff0c;调度机制在多Agent协同环境中的角色愈发关键。传统经典计算中的任务调度模型难以应对量子态叠加、纠缠测量和退相干时间等独特物理约束&#xff0c;推动了量子计算Agent调度…

作者头像 李华
网站建设 2026/8/19 18:15:09

3步搞定智能QQ机器人:OneBot协议零门槛搭建指南

3步搞定智能QQ机器人&#xff1a;OneBot协议零门槛搭建指南 【免费下载链接】LiteLoaderQQNT-OneBotApi NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LiteLoaderQQNT-OneBotApi 还在为复杂的机器人开发头疼吗&#xff1f;&#x1f914; 今天我要…

作者头像 李华
网站建设 2026/8/21 4:59:53

阵列信号处理波束形成

一、基础理论框架 1. 波束形成原理 空间滤波本质&#xff1a;通过阵列单元信号加权叠加&#xff0c;增强目标方向信号增益&#xff0c;抑制干扰与噪声关键参数&#xff1a; 阵元间距&#xff08;通常≤λ/2≤λ/2≤λ/2避免栅瓣&#xff09;波束指向角&#xff08;θarcsin(λd…

作者头像 李华
网站建设 2026/8/21 8:03:13

联想拯救者BIOS高级设置解锁:从入门到精通的完整指南

联想拯救者BIOS高级设置解锁&#xff1a;从入门到精通的完整指南 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具&#xff0c;例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/le…

作者头像 李华