编译器会影响死延时时间吗?
同样一个简单的死延时,两个for循环,为什么编译出来延时时间不一样呢。同样都是keil4。需要设置什么地方吗? 本帖最后由 bjyw 于 2016-1-17 15:18 编辑就是这么一个简单的延时。
void DelayuS (uint32 del)
{
//延时dly us
uint32 i;
for ( ; del>0; del--)
for (i=0; i<20; i++);
}
优化级影响最大。 现在选择的level 0还是和别人编译出来的延时有差异啊,同样的设置和板子。 希望大家多关注一下。找不到原因。
编译出来的软件明显比同样的代码编译出来的软件少了几kB。原来是只有41kB,我的keil4编译出来只有38kB。 看反汇编喽 这种 超短的延时,不准的话,主要是函数转跳花很多时间,还有就是看看有没有进入中断函数了,包括systick 没有进中断函数的。 想要delay准还是用敲汇编吧 A RM是有流水线的,用数指令的方法延时不准,要用定时器延时 tenx 发表于 2016-1-17 21:39
A RM是有流水线的,用数指令的方法延时不准,要用定时器延时
对的,曾经遇到过这种问题。好不容易调整好时间,结果别处加了点代码,延时又不准了
页:
[1]