bjyw 发表于 2016-1-17 15:00:07

编译器会影响死延时时间吗?

同样一个简单的死延时,两个for循环,为什么编译出来延时时间不一样呢。同样都是keil4。需要设置什么地方吗?

bjyw 发表于 2016-1-17 15:16:44

本帖最后由 bjyw 于 2016-1-17 15:18 编辑

就是这么一个简单的延时。

void DelayuS (uint32 del)
{
        //延时dly us
        uint32 i;
        for ( ; del>0; del--)
                   for (i=0; i<20; i++);
}

cock 发表于 2016-1-17 15:28:57

优化级影响最大。

bjyw 发表于 2016-1-17 15:34:09

现在选择的level 0还是和别人编译出来的延时有差异啊,同样的设置和板子。

bjyw 发表于 2016-1-17 16:01:31

希望大家多关注一下。找不到原因。

bjyw 发表于 2016-1-17 16:13:28

编译出来的软件明显比同样的代码编译出来的软件少了几kB。原来是只有41kB,我的keil4编译出来只有38kB。

hitgds 发表于 2016-1-17 17:03:37

看反汇编喽

jcrorxp 发表于 2016-1-17 17:15:24

这种 超短的延时,不准的话,主要是函数转跳花很多时间,还有就是看看有没有进入中断函数了,包括systick

bjyw 发表于 2016-1-17 17:50:44

没有进中断函数的。

weichao4808335 发表于 2016-1-17 18:28:34

想要delay准还是用敲汇编吧

tenx 发表于 2016-1-17 21:39:07

A RM是有流水线的,用数指令的方法延时不准,要用定时器延时

w282529350 发表于 2016-1-18 11:28:12

tenx 发表于 2016-1-17 21:39
A RM是有流水线的,用数指令的方法延时不准,要用定时器延时

对的,曾经遇到过这种问题。好不容易调整好时间,结果别处加了点代码,延时又不准了
页: [1]
查看完整版本: 编译器会影响死延时时间吗?