打印
[STM32F1]

延时函数延时时间怎么算

[复制链接]
470|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyf部长|  楼主 | 2022-8-6 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
28027,系统时钟60M,像这样的延时函数:
void delay(Uint32 count)
{
    while(count>0)  
     {
       count--;
     }
}

使用特权

评论回复
沙发
wyjie| | 2022-8-6 11:27 | 只看该作者
是不是系统时钟长度(1/60M)乘以计数值(count)

使用特权

评论回复
板凳
dingy| | 2022-8-6 11:29 | 只看该作者
这还要看你的count式存储在哪里的,读写这个变量可能也占用时钟周期

使用特权

评论回复
地板
ousj| | 2022-8-6 11:31 | 只看该作者
调用这个延时函数的过程也会花费一些时间

使用特权

评论回复
5
zhenykun| | 2022-8-6 11:33 | 只看该作者
具体你可以看看调试过程生成的汇编程序

使用特权

评论回复
6
heweibig| | 2022-8-6 11:35 | 只看该作者
在中断中检测按键,显然不合理,这叫严重的浪费。

使用特权

评论回复
7
stly| | 2022-8-6 11:38 | 只看该作者
无法准确计算延时时间。
要精确定时,可以选择定时器。

使用特权

评论回复
8
pengf| | 2022-8-6 11:40 | 只看该作者
datasheet例程中有延时函数,是使用汇编写的,且定义为Ramfuncs,即在RAM中运行,执行的时间是可以用数周期的办法算出来的 。

使用特权

评论回复
9
heweibig| | 2022-8-6 11:42 | 只看该作者
这种就别求精度了,能用就行。

使用特权

评论回复
10
llljh| | 2022-8-6 11:44 | 只看该作者

不如用systick做定时延时器。

使用特权

评论回复
11
xxrs| | 2022-8-6 11:47 | 只看该作者
这种计算要看变异后的汇编怎么实现。

使用特权

评论回复
12
pengf| | 2022-8-6 11:51 | 只看该作者
所以不建议这种延时,这种用于不需要精确的那种可

使用特权

评论回复
13
heweibig| | 2022-8-6 11:53 | 只看该作者
比如随意延长一下那种。

使用特权

评论回复
14
xxrs| | 2022-8-6 11:55 | 只看该作者
正规的延时用定时器更好

使用特权

评论回复
15
zhaoxqi| | 2022-8-6 11:58 | 只看该作者

看编译后的汇编了

使用特权

评论回复
16
zwll| | 2022-8-6 12:02 | 只看该作者
9楼正解,用systick是比较准确的

使用特权

评论回复
17
renyaq| | 2022-8-6 12:05 | 只看该作者
跟你用的主频有关

使用特权

评论回复
18
xxrs| | 2022-8-6 12:07 | 只看该作者
系统时钟用的啥

使用特权

评论回复
19
zyf部长|  楼主 | 2022-8-6 12:10 | 只看该作者
哦,那我就知道怎么回事了,多谢大家

使用特权

评论回复
20
andygirl| | 2022-8-6 14:53 | 只看该作者
改用定时器

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

694

主题

7102

帖子

8

粉丝