LInux驱动 延时函数

本文探讨了Linux驱动中延时函数的应用,包括忙等待延时和睡眠延时。忙等待延时精度高但占用CPU资源,而睡眠延时不占用CPU但精度较低。建议在需要微秒级延时时使用高精度定时器,因为内核仅提供毫秒级定时器中断。

延时函数

  1. 应用中的延时函数
#include <unistd.h>

unsigned int sleep (unsigned int sec);
参数说明: sec 延时的时间长 单位(秒)

unsigned int usleep(unsigned int usec)
参数说明;usec 延时的时间长 单位(毫秒)

  1. 驱动程序中的延时函数

  • 忙等待延时

对于长时间的忙等待意味着无谓的耗费着CPU的资源。
优点 : 时间精确度高
缺点:占用CPU资源

#include <linux/delay.h>

void ndelay(unsigned long nsec); //纳秒级别的延时函数
void udelay(unsigned long usec); //微秒级别的延时函数
void mdelay(unsigned long msec); //毫秒级别的延时函数

注意:
udelay一般适用于一个较小范围的delay,如果数字大于200 系统会认为你这个是一个错误的delay函数,因此 如果要2ms以上的delay 需要使用mdelay函数。


  • 睡眠延时

会形成阻塞,影响进程调度(长延时)。
优点 : 不占用CPU资源
缺点:时间精度低

#include <linux/delay.h>


void ssleep(unsigned int seconds); //秒级别的延时函数
void msleep(unsigned int msec); //毫秒秒级别的延时函数

总结与建议

关于精确的延时,建议还是使用高精确的定时器,去实现微秒级别的延时,因为内核只提供毫秒级别的定时器中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

求丶空白灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值