UCOSII如何实现微妙级别的延时,还有OSTimeDly();最小是多小秒
1个回答
展开全部
我先回答你后面的问题:OSTimeDly()最小延时多长?这个最小的延时准确来说是小于等于一个ucos的系统节拍。至于多少秒,需要看你的ucos工作的节拍时长是多长(参见宏OS_TICKS_PER_SEC,它的值意思就是1秒钟有多少个系统节拍,比如这个值是1000,那么你的系统节拍就是1/1000S);
如何实现微妙级别的延时?在ucos上基本是不可能实现这么高精度的延时的,如果你不介意高频率切换任务带来的cpu浪费,你当然可以把它的节拍调到微妙级别以下,然后通过OSTimeDly来获得这个延时。最可靠的实现方法是使用硬件定时器来获得这个高精度的延时。另外如果你真的考虑把时钟节拍调到微妙级来实现高精度延时,我建议你最好把节拍调到100ns,因为ucos的延时计算也有个精度问题,他的误差波动在1个时钟节拍内,也就是说你需要把节拍调到100ns后,其误差(≤0.1us)才会显得可以忽略掉(相对于1us)
如何实现微妙级别的延时?在ucos上基本是不可能实现这么高精度的延时的,如果你不介意高频率切换任务带来的cpu浪费,你当然可以把它的节拍调到微妙级别以下,然后通过OSTimeDly来获得这个延时。最可靠的实现方法是使用硬件定时器来获得这个高精度的延时。另外如果你真的考虑把时钟节拍调到微妙级来实现高精度延时,我建议你最好把节拍调到100ns,因为ucos的延时计算也有个精度问题,他的误差波动在1个时钟节拍内,也就是说你需要把节拍调到100ns后,其误差(≤0.1us)才会显得可以忽略掉(相对于1us)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询