意外发现Cortex-M内核带的64bit时间戳,比32bit的DWT时钟周期计数器更方便,再也不用担心溢出问题了

视频:

https://www.bilibili.com/video/BV1Bw411D7F5

意外发现Cortex-M内核带的64bit时间戳,比32bit的DWT时钟周期计数器更方便,再也不用担心溢出问题了

介绍:

看参数手册的Debug章节,System ROM Table里面带Timestamp generator的都是支持的,不带的不支持。当前测试H743/H750等系列是带的。与DWT时钟计数器一样,可以调试使用也可以正常程序运行使用。

C程序里面DWT和64bit时间戳TSG比较测试,测量结果基本一致:

并且使用LUA小程序也可以方便控制64bit时间戳TSG:

测试代码:

Lua

Lua 复制代码
TSG_CNTCR = 0x5C005000  --bit0 用于使能
TSG_CNTFID0 = 0x5C005020  --主频设置
TSG_CNTCVL = 0x5C005008  --低32bit
TSG_CNTCVU = 0x5C00500C  -- 高32bit
 
pg_init()
 
re = pg_write32(TSG_CNTCR, 0x00000000)  if(re == 0) then print("1") end
re = pg_write32(TSG_CNTCVL, 0x00000000)if(re == 0) then print("2") end
re = pg_write32(TSG_CNTCVU, 0x00000000)if(re == 0) then print("3") end
re = pg_write32(TSG_CNTCR, 0x00000001)if(re == 0) then print("4") end
re = pg_write32(TSG_CNTFID0, 200000000)if(re == 0) then print("5") end
 
for i=0,500,1 do
   a = pg_read32(TSG_CNTCVL)
   b = pg_read32(TSG_CNTCVU)
   print(string.format("%d, %d", a, b))
   delayms(100)
end

参考资料:

1、工程下载:

链接:百度网盘 请输入提取码 提取码:3e96

2、H7-TOOL的LUA小程序教程第8期:SWD接口函数,读写各种类型数据,内存和寄存器等
H7-TOOL的LUA小程序教程第8期:SWD接口函数,读写各种类型数据,内存和寄存器等(2023-04-07) - H7-TOOL开发工具 - 硬汉嵌入式论坛 - Powered by Discuz!

相关推荐
DYWorker0012 小时前
Linux驱动子系统:中断子系统 —— Consumer和Provider(005)
linux·驱动开发
是翎1 天前
图解大语言模型部署
人工智能·驱动开发·深度学习·开源协议·imagen
智购科技无人售货机工厂1 天前
2026自动售货机AI智能体架构:从47个小模型到33.7亿Token的工程实践~YH
android·人工智能·驱动开发·单片机·pandas
WWJA王文举1 天前
从设备地址到寄存器地址:I²C驱动完整流程详解
嵌入式开发·rtos·通信协议·i2c
Qt程序员1 天前
做嵌入式必备|12 个 RTOS 核心机制,建议收藏
嵌入式·嵌入式开发·rtos
普普通通的一名码农1 天前
DAC1220 芯片手册
驱动开发·芯片手册
secondyoung3 天前
I2C通信协议详解
arm开发·驱动开发·stm32·单片机·嵌入式硬件·mcu·51单片机
不怕犯错,就怕不做3 天前
RK linux在buildroot中如何添加linux命令
linux·驱动开发·嵌入式硬件
喵叔哟3 天前
从 Prompt 到可执行规格:认识 GitHub Spec Kit
驱动开发·prompt·github
飞多学堂4 天前
每日开源硬件精选简报 2026-09-11
驱动开发·开源·开源硬件·硬件开源·电子制作