当前位置: 技术问答>linux和unix
碰到难题了 怎么实现微秒级的定时呀
来源: 互联网 发布时间:2016-08-11
本文导语: 想在中断里面启动一个定时器, 这个定时器在大概500us后把某个gpio拉低. 有同学实现过吗? 100分全给了 | 没做过,只是提建议 要是要求不严格,可以在tasklet、工作队列里 udelay(500); 只是taskl...
想在中断里面启动一个定时器, 这个定时器在大概500us后把某个gpio拉低. 有同学实现过吗? 100分全给了
|
没做过,只是提建议
要是要求不严格,可以在tasklet、工作队列里 udelay(500);
只是tasklet、工作队列的开始执行时间不能确定
或者 timer、rtc 来实现这样的短延时
要是要求不严格,可以在tasklet、工作队列里 udelay(500);
只是tasklet、工作队列的开始执行时间不能确定
或者 timer、rtc 来实现这样的短延时
|
这个要借助于其它中断资源的,linux的系统设备管理不了这么精细的定时,更何况且你还是在中断里做的,使用udelay()一来定时不准确,二来会大大降低系统运行效率。
如果还有PWM资源,就可以在中断A中使能PWM中断并标记一个原子变量,然后在PWM中断服务例程中下拉GPIO,再修改原子变量的标记,让tasklet删除PWM中断。
如果还有PWM资源,就可以在中断A中使能PWM中断并标记一个原子变量,然后在PWM中断服务例程中下拉GPIO,再修改原子变量的标记,让tasklet删除PWM中断。