keil5软件,软件延时时间delay和实际硬件电路延时时间相差太大怎么回事?

keil5软件,软件延时时间delay和实际硬件电路延时时间相差太大怎么回事?

因为估算很难。
首先,从c语言不能直接知道实际的机器指令,所以无法准确判断时间
然后,就算是汇编,知道机器指令,现在的单片机都有流水线,有了流水线,就不好计算了,你很难知道某条指令需要完整的机器周期还是一个时钟周期就完成,很多时候流水线还会被打乱,要是遇到中断,就更复杂了。
所以用软件延时,一般只能用在精度不高的场合,先是大概估计个数值,实际运行后根据效果再微调一下