微秒级延迟其实意义不大,但是还是有需要的,下面我自己简单实现了一个方法,如果你有更好的欢迎分享给我。
我在使用树莓派编程操作GPIO口会用到这个函数
/// <summary> /// 微秒级延迟,会稍有偏差 /// </summary> /// <param name="time">延迟时间,1/毫秒,0.0500/500微秒</param> /// <returns></returns> public static double delayUs(double time) { System.Diagnostics.Stopwatch stopTime = new System.Diagnostics.Stopwatch(); stopTime.Start(); while (stopTime.Elapsed.TotalMilliseconds < time) {} stopTime.Stop(); return stopTime.Elapsed.TotalMilliseconds; }
我自己做了个测试延迟 50微秒,可以很明显的看到其实微秒延迟除了第一次调用的时候,后面偏差还是蛮小的。
如果你要求偏差更加小可以提取函数里面的部分延迟代码和你的代码组合,尽可能的减少中间代码的操作,就可以实现更加小的偏差。
发表评论