要实现这种无具体工作的延时,需要关闭相应优化,否则编译器会把单纯for循环,而没有具体执行内容的优化掉。
此外这种循环延时是根据 具体执行环境和对应语句的
先要找到这样的循环编译后 对应的机器指令数量,然后根据机器单条指令执行周期,二者一般相乘就是一个循环的延时时间,再乘上循环次数,就可以得到总的延时时间啦。
这里单条指令执行周期就是 执行环境相关因素,它和具体的芯片型号、工作主频等相关。
如果是STM32,可以通过开发环境仿真,设置断点来查看消耗时间;
如果是51系列,那就得计算下,1条指令通常需要若干机器周期,1个机器周期等于1~6个时钟周期;按照11.0592来看,一次循环简单认为就是1条指令,那就是1us。