当前位置: 首页 > news >正文

## 技术笔记:STM32 耗时统计的两把“尺子”


在嵌入式开发中,性能优化离不开对代码执行时间的精准测量。今天记录两种最常用的统计方式:微观的周期计数宏观的毫秒统计

1. 微观精度:DWT 计数器(内核级周期统计)

第一段代码使用了 ARM Cortex-M 内核特有的 DWT (Data Watchpoint and Trace) 计数器。

uint32_t tick_start = DWT->CYCCNT;
// ... 执行代码 ...
uint32_t elapsed_ticks = DWT->CYCCNT - tick_start;
float elapsed_us = (float)elapsed_ticks / SystemCoreClock * 1000000.0f;
  • 原理DWT->CYCCNT 挂在 CPU 时钟上,CPU 每走一个时钟周期(Tick),它就加 1。

  • 优点

  • 极高精度:在 64MHz 频率下,分辨率高达 15.625 纳秒

  • 零额外负载:它是硬件自动累加,不占用中断。

  • 适用场景:测量算法性能、数学运算耗时、驱动时序调试。

  • 注意:64MHz 下,32 位计数器约 67 秒就会溢出,仅适用于短时间测量。


2. 宏观精度:HAL_GetTick (系统级毫秒统计)

STM32 常见的另一种方式是基于 SysTick 定时器产生的毫秒计数。

uint32_t start_ms = HAL_GetTick();
// ... 执行耗时较长的操作 ...
uint32_t elapsed_ms = HAL_GetTick() - start_ms;
  • 原理:通常配置 SysTick 每 1ms 触发一次中断,在中断里给一个全局变量加 1。

  • 优点

  • 简单易用:标准 HAL 库内置,随处可用。

  • 范围大:溢出周期长达 49 天。

  • 适用场景:统计用户操作延时、传感器采样间隔、超时处理(Timeout)。

  • 缺点:精度只有 1ms,无法捕捉代码级的细微波动。


💡 总结与心得

统计方式 核心 API / 寄存器 分辨率 常用单位 特点
DWT DWT->CYCCNT 1 周期 \(us\) / \(ns\) 极精准,适合底层调优
SysTick HAL_GetTick() 1 毫秒 \(ms\) 稳定,适合应用层逻辑

感悟:做算法优化时,一定要用 DWT。有时候一行浮点运算代码多加了一个 (float) 强制转换,在 DWT 的显微镜下,那几十个周期的差距会无所遁形。而对于用户交互,HAL_GetTick 已经绰绰有余。


http://www.jsqmd.com/news/462411/

相关文章:

  • 手把手教你用Python 3.7和PyTorch 1.10复现detrex代码(含避坑指南)
  • 基于Nacos动态配置的SkyWalking高可用集群实战部署与调优
  • Qwen3-0.6B-FP8赋能SpringBoot:快速构建智能客服后端应用
  • Windows下ESP32S3开发环境搭建:从menuconfig报错到图形化配置的完整指南
  • 具身智能的“读心术”:逆强化学习(IRL)核心解析与产业前瞻
  • HG-ha/MTools部署教程:Kubernetes集群部署MTools微服务化AI能力网关
  • Vue3 中高效监听 props 变化的 3 种实用方案
  • 华为与华三交换机系统版本升级实战指南(含双控板处理与FTP/TFTP协议对比)
  • Qwen3-VL-Reranker-8B详细步骤:Gradio 6.0+兼容性调试与UI定制方法
  • Android系统10 RK3399启动流程解析:深入理解parameter.txt的分区布局与内核参数传递
  • 一分钟教你回收京东e卡,方法超简单! - 团团收购物卡回收
  • 图书网站书评与销量排行爬取
  • 前端集成海康相机RTSP流的实战指南(基于VLC插件)
  • SUNFLOWER MATCH LAB创新应用:AI编程辅助生成植物识别代码片段
  • 2026年四川抖音短视频代运营5强推荐名单,联系方式公开 - 精选优质企业推荐榜
  • AD5933阻抗测量模块实战:从I2C通信到Python数据分析
  • 外卖平台商家信息与评论采集
  • 服务器性能测试工具一站式下载指南
  • Qwen3-TTS语音设计世界应用场景:智能硬件TTS本地化轻量化部署
  • 旅游网站景点评论情感分析
  • MacBookPro双系统Win10驱动问题全解析:Wifi与触控板修复实战
  • LVDS系列5:Xilinx 7系IDDR原语实战配置与模式选择指南
  • 汽车之家车型参数对比表爬取
  • 从零搭建Simulink-Adams联合仿真平台:实现电机转速的精准闭环控制
  • 等时替代模型在健康行为优化中的应用:从理论到实践
  • MA-SAM:解锁SAM在三维医学图像分割中的跨模态潜力
  • 2026年陕西ASA合成树脂瓦厂家推荐榜:五大本土实力品牌解析(仿古树脂瓦屋面瓦优选指南) - 深度智识库
  • AIDE手机编程入门指南(零基础启航) 启程篇
  • ARM64架构下RPM包依赖问题实战指南
  • Qwen3智能字幕对齐系统Git版本控制实践