纪国圣 发表于 2021-12-11 11:00

【华大测评】官方延时函数Ddl_Delay1xx精度测量

今天看hc32f460_utility.c中官方给出的void Ddl_Delay1us(uint32_t u32Cnt)和void Ddl_Delay1ms(uint32_t u32Cnt)时,发现其函数注释说明其延时不是精确的:/**
*******************************************************************************
** \brief Delay function, delay 1us approximately
**
** \param u32Cnt               us
**
** \retval none
**
******************************************************************************/
/**
*******************************************************************************
** \brief Delay function, delay 1ms approximately
**
** \param u32Cnt               ms
**
** \retval none
**
******************************************************************************/好奇其误差到底有多大,因此用TIMER02测量其精度。TIMER02的最小测量分辨率为0.02us。测量结果如下:

误差挺大的,让人意外。

cyclefly 发表于 2021-12-11 16:51

这个不是串口打印的么?
下载看看怎么测试的,学习下

查询无结果 发表于 2021-12-12 13:11

还是得自己用滴答定时器延时

martinhu 发表于 2021-12-12 21:07

官方库函数里面,有两个delay函数,一个是软件指令的delay,一个是systick定时器做的delay,
你测试的是软件指令的delay,肯定有误差!
如果想要准的,可以用systick或者其他定时器做delay!!!

tfqi 发表于 2022-1-10 13:24

大概能相差多少呢

wiba 发表于 2022-1-10 13:32

为什么有时候会卡在延时函数里边呢

qcliu 发表于 2022-1-10 13:52

用systick做延时

zljiu 发表于 2022-1-10 14:20

没有其他代码进行干扰吗

coshi 发表于 2022-1-10 14:36

还得刨除输出传输用的时间

mdc9 发表于 2022-5-18 15:50

martinhu 发表于 2021-12-12 21:07
官方库函数里面,有两个delay函数,一个是软件指令的delay,一个是systick定时器做的delay,
你测试的是软 ...

systick 最小可以设定1us延时么

mdc9 发表于 2022-5-18 17:52

mdc9 发表于 2022-5-18 15:50
systick 最小可以设定1us延时么

感谢【qjp1988113】的分享

下面是我用他代码 测试的结果

页: [1]
查看完整版本: 【华大测评】官方延时函数Ddl_Delay1xx精度测量