Linux ndelay()很不准怎么回事,ndelay(1),结果延时了1us?

Linux ndelay()很不准怎么回事,ndelay(1),结果延时了1us?,第1张

所有的 sleep/delay 类型的接口,都只能保证休眠时间 "不短于" 传入的参数,但是无法保证绝对精确。精确度和底层实现机制有关(理论上讲任何实现都会有一个最小精度的,比如1us 或者1ms,如果试图delay一个小于最小精度的时长,最终效果就是大于等于最小精度的),也和其他因素有关,比如cpu核数,进程/线程数,优先级,任务调度等。 所以一般只能保证 "不短于" ,无法保证绝对精确。

两种方案,简单粗暴的直接用for循环:

for(int i=0i<1000000000i++)

循环次数自行调试,试出大概的值就行

第二种,精准延时,通过SysTick系统计时器来实现


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/9018753.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-24
下一篇2023-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存