在linux驱动中实现纳秒的延时用哪个函数?

在linux驱动中实现纳秒的延时用哪个函数?,第1张

MontaVista 4.0 (kernel version 2.6.X) 支持HRT,可以实现微妙级的延时,好像还到不了纳秒。用关中断和busy loop来实现当然可以,但是关中断时间不能太长,而且只能在内核空间实现,肯定影响其他任务调度。如果需要长时间产生这样的信号,那感觉用不太适合用Linux来实现。

在arm嵌入式中,用定时器设置延迟函数的程序实现方法如下:

#include<reg51.h>晶振11.0592STC89C51

sbit RELAY = P1^4  //定义继电器使用的IO口

sbit K1    = P0^0  //定义按键使用的IO口

void main()

{

while(1)//大循环

{

if(K1 == 0)    //如果按键按下

{   a=2000/这里/时间怎样设定一个小时

RELAY = 0//继电器闭合

while(a--)

a=2000这里/时间怎样设定一个小时

RELAY = 1

while(a--)

}

else

{

RELAY = 1

}

}

}    

利用定时器延时的优缺点:

1、因为定时器累加与CPU无关,即使中断,仍然会保持计数。不受上述问题影响。

2、缺点需要占用定时器资源。

3、功耗也会高一些。

arm嵌入式简介:

ARM是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。

楼主你好,我现在也出现了一个同样的问题,我用9260通过SPI来控制一个芯片,那芯片工作频率1M-5M,现在也是在调试驱动程序不成功,用分析仪检测用ndelay延时误差非常大,楼主请问下你的问题解决了吗?


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存