[应用相关] 延时函数延时时间怎么算

[复制链接]
546|16
 楼主| zyf部长 发表于 2020-7-24 23:29 | 显示全部楼层 |阅读模式

28027,系统时钟60M,像这样的延时函数:
void delay(Uint32 count)
{
    while(count>0)  
     {
       count--;
     }
}
hanwe 发表于 2020-7-24 23:33 | 显示全部楼层

是不是系统时钟长度(1/60M)乘以计数值(count)
huanghuac 发表于 2020-7-24 23:36 | 显示全部楼层
这还要看你的count式存储在哪里的,读写这个变量可能也占用时钟周期
huanghuac 发表于 2020-7-24 23:39 | 显示全部楼层
调用这个延时函数的过程也会花费一些时间
chuxh 发表于 2020-7-24 23:42 | 显示全部楼层
具体你可以看看调试过程生成的汇编程序
wangpe 发表于 2020-7-24 23:42 | 显示全部楼层
在中断中检测按键,显然不合理,这叫严重的浪费。
renyaq 发表于 2020-7-24 23:48 | 显示全部楼层
无法准确计算延时时间。
要精确定时,可以选择定时器。
tian111 发表于 2020-7-24 23:52 | 显示全部楼层
datasheet例程中有延时函数,是使用汇编写的,且定义为Ramfuncs,即在RAM中运行,执行的时间是可以用数周期的办法算出来的 。
hanwe 发表于 2020-7-24 23:55 | 显示全部楼层

这种就别求精度了,能用就行。
huwr 发表于 2020-7-24 23:58 | 显示全部楼层
不如用systick做定时延时器。
jiekou001 发表于 2020-7-25 09:22 | 显示全部楼层
这种计算要看变异后的汇编怎么实现。
jiekou001 发表于 2020-7-25 09:22 | 显示全部楼层
所以不建议这种延时,这种用于不需要精确的那种可以,比如随意延长一下那种。
正规的延时用定时器更好
dingy 发表于 2020-7-25 18:21 | 显示全部楼层
看编译后的汇编了
stly 发表于 2020-7-25 18:30 | 显示全部楼层
9楼正解,用systick是比较准确的
morrisk 发表于 2020-7-25 18:35 | 显示全部楼层
跟你用的主频有关
kangzj 发表于 2020-7-25 18:38 | 显示全部楼层

系统时钟用的啥
 楼主| zyf部长 发表于 2020-7-25 18:42 | 显示全部楼层

哦,那我就知道怎么回事了,多谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

694

主题

7102

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部