news 2026/4/16 12:08:27

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/4/16 12:07:50

6、产品规划与需求管理:从案例到实践

产品规划与需求管理:从案例到实践 在软件开发和产品管理领域,有许多关键问题需要我们深入探讨,以确保项目的成功。下面我们将从一些有趣的案例出发,深入剖析软件项目中常见的问题以及有效的解决方法。 常见问题剖析 在日常软件团队工作中,常常会出现一些类似“你没告诉…

作者头像 李华
网站建设 2026/4/16 12:03:28

5分钟快速上手:Windows轻量级倒计时神器Hourglass完全使用手册

5分钟快速上手&#xff1a;Windows轻量级倒计时神器Hourglass完全使用手册 【免费下载链接】hourglass The simple countdown timer for Windows. 项目地址: https://gitcode.com/gh_mirrors/ho/hourglass 还在为Windows系统缺乏专业计时功能而苦恼吗&#xff1f;Hourgl…

作者头像 李华
网站建设 2026/4/15 14:50:08

系统发育树可视化新手指南:从入门到精通的完整路线图

面对复杂的物种进化关系数据&#xff0c;你是否感到无从下手&#xff1f;系统发育树可视化工具正是为简化这一过程而生&#xff0c;它能够将枯燥的基因序列数据转化为直观的树状结构图。本文将为你详细介绍如何快速上手这一专业工具&#xff0c;让数据讲述生动的进化故事。 【免…

作者头像 李华
网站建设 2026/4/16 11:57:55

从小程序到云控制台:智慧停车系统全链路沦陷深度复盘

一、攻击背景与行业安全现状 随着智慧城市建设加速&#xff0c;智慧停车系统作为城市交通基础设施的核心组成&#xff0c;已实现“小程序端-后端服务-云平台-物联网设备”的全链路打通。这类系统不仅承载着海量用户的个人信息&#xff08;车牌号、手机号、支付记录、停车轨迹&a…

作者头像 李华
网站建设 2026/4/10 16:20:26

CTF从0到1攻防宝典:Web+Misc实战进阶与参赛拿分全攻略

一、CTF基础与入门路径 1. CTF核心价值与赛道选择 CTF不只是网络安全的"竞技游戏"&#xff0c;更是技术人才的"练兵场"——既能夯实计算机底层知识&#xff08;操作系统、网络协议、编程原理&#xff09;&#xff0c;又能培养实战化攻防思维&#xff0c;现…

作者头像 李华
网站建设 2026/4/15 10:28:22

智能物流Agent路线决策全解析(动态调优实战案例)

第一章&#xff1a;智能物流Agent路线调整概述在现代智能物流系统中&#xff0c;动态环境下的路径优化是提升运输效率的核心环节。智能物流Agent作为自主决策单元&#xff0c;能够根据实时交通、天气、订单变更等外部因素&#xff0c;自动调整配送路线。这种自适应能力不仅减少…

作者头像 李华