延时函数
- 应用中的延时函数
#include <unistd.h>
unsigned int sleep (unsigned int sec);
参数说明: sec 延时的时间长 单位(秒)
unsigned int usleep(unsigned int usec)
参数说明;usec 延时的时间长 单位(毫秒)
- 驱动程序中的延时函数
- 忙等待延时
对于长时间的忙等待意味着无谓的耗费着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); //毫秒秒级别的延时函数
总结与建议
关于精确的延时,建议还是使用高精确的定时器,去实现微秒级别的延时,因为内核只提供毫秒级别的定时器中断。
本文探讨了Linux驱动中延时函数的应用,包括忙等待延时和睡眠延时。忙等待延时精度高但占用CPU资源,而睡眠延时不占用CPU但精度较低。建议在需要微秒级延时时使用高精度定时器,因为内核仅提供毫秒级定时器中断。
492

被折叠的 条评论
为什么被折叠?



