这个其实就是根据汇编来推算延时时间的.
每一条汇编指令执行的时间是确定的.因此就可以根据指令的数量来精确定时.
C语言这样的延时,是不准确的,想要准确的延时,可以用定时器,滴答时钟来做。
C语言,在编译的时候,会由编译器转化为汇编语言。汇编语言是可以精确指令的执行时间。
但是由于编译器的版本,优化方式,可能就造成延时不一样。
这里面的语句是为了保证整个处理过程总时间(加上调用)更接近10ms的特殊处理,所谓的误差0us是不可能的。
注释部分是解释为什么有这样的设定,里面的2us之类是单个过程处理的时间(根据编译后指令和单条指令需要时间计算出来的)
这里的注释是在解释这个精确延时是如何得到的
每一条C语言都对应着汇编指令
而汇编指令的运行时间是已知的,单位是机器周期(1/主频)
注释里的公示就是计算全部循环的机器指令周期 最后乘以周期的时间得到精确延时