硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1749|回复: 14
收起左侧

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

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-8-22 05:10:24 | 显示全部楼层 |阅读模式
视频:

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



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

QQ截图20230822044629.png

QQ截图20230822044813.png

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

QQ截图20230822045035.png

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

12.png

测试代码:
[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、工程下载:
链接:https://pan.baidu.com/s/1__NJXovPTmiE8WrkkzEqLA 提取码:3e96

2、H7-TOOL的LUA小程序教程第8期:SWD接口函数,读写各种类型数据,内存和寄存器等
https://www.armbbs.cn/forum.php?mod=viewthread&tid=118104


评分

参与人数 1金币 +10 收起 理由
byccc + 10 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2023-8-22 05:10:31 | 显示全部楼层
整理完毕。
回复

使用道具 举报

12

主题

176

回帖

212

积分

高级会员

积分
212
发表于 2023-8-22 07:12:26 来自手机 | 显示全部楼层
牛,注意休息
回复

使用道具 举报

19

主题

234

回帖

291

积分

高级会员

积分
291
发表于 2023-8-22 09:18:02 | 显示全部楼层
  我以前都是用的两个定时器级联的,有这个就省了好多资源
回复

使用道具 举报

13

主题

89

回帖

128

积分

初级会员

积分
128
发表于 2023-8-22 18:37:53 | 显示全部楼层
硬汉哥不用对DWT的寄存器进行解锁吗,再去初始化
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2023-8-22 19:19:22 | 显示全部楼层
qq1646544 发表于 2023-8-22 18:37
硬汉哥不用对DWT的寄存器进行解锁吗,再去初始化

F4,F1,H7等系列没有这个问题,F7系列有这种问题。
回复

使用道具 举报

13

主题

89

回帖

128

积分

初级会员

积分
128
发表于 2023-8-22 19:37:13 | 显示全部楼层
主要是看了这篇经验案例也是H7的 DWT工作

Armv7-M架构的STM32如何启用DWT进行计数_v1.0.pdf

331.72 KB, 下载次数: 66

DWT

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2023-8-22 19:59:32 | 显示全部楼层
qq1646544 发表于 2023-8-22 19:37
主要是看了这篇经验案例也是H7的 DWT工作

H7系列比较简单,做个下面的处理就行:

[C] 纯文本查看 复制代码
/*
*********************************************************************************************************
*	函 数 名: bsp_InitDWT
*	功能说明: 初始化DWT. 该函数被 bsp_Init() 调用。
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
void bsp_InitDWT(void)
{
	DEM_CR         |= (unsigned int)DEM_CR_TRCENA;   
	DWT_CYCCNT      = (unsigned int)0u;
	DWT_CR         |= (unsigned int)DWT_CR_CYCCNTENA;
}



回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2023-8-23 09:00:28 | 显示全部楼层
tovinz 发表于 2023-8-22 09:18
我以前都是用的两个定时器级联的,有这个就省了好多资源

+1

我是用32bit定时器实现的,有了这个方便不少。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

13

主题

89

回帖

128

积分

初级会员

积分
128
发表于 2023-8-23 10:37:27 | 显示全部楼层
eric2013 发表于 2023-8-22 19:59
H7系列比较简单,做个下面的处理就行:

[mw_shl_code=c,true]/*

好的感谢硬汉哥
回复

使用道具 举报

13

主题

89

回帖

128

积分

初级会员

积分
128
发表于 2023-8-23 14:40:41 | 显示全部楼层
H7x3的参考手册版本小于7的就不要看了,Debug的TSG地址不对,刚刚从ST官网下载了第8版本的H7x3的参考手册.
微信图片_20230823141436.png
回复

使用道具 举报

9

主题

160

回帖

187

积分

初级会员

积分
187
发表于 2023-8-25 17:27:56 | 显示全部楼层
实测 STM32H723/733 系列没有这个模块
回复

使用道具 举报

32

主题

295

回帖

391

积分

高级会员

积分
391
发表于 2024-3-5 09:22:42 | 显示全部楼层
请教一下F4有这个定时器吗,
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2024-3-5 11:53:42 | 显示全部楼层
weiyuliang 发表于 2024-3-5 09:22
请教一下F4有这个定时器吗,

F4系列,之前查是没有,
回复

使用道具 举报

32

主题

295

回帖

391

积分

高级会员

积分
391
发表于 2024-3-5 14:47:38 | 显示全部楼层
eric2013 发表于 2024-3-5 11:53
F4系列,之前查是没有,

谢谢硬汉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-30 01:46 , Processed in 0.226993 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表