UCOS2和延时的问题,大虾们快来支招啊。

[复制链接]
4913|5
 楼主| gql1123 发表于 2007-9-19 18:40 | 显示全部楼层 |阅读模式
我在用ARM7上系统UCOS2。<br />其中有一段程序需要比较精确的延时。<br />我用的自己做的延时语句<br />void&nbsp;delay&nbsp;(uint16&nbsp;us)&nbsp;&nbsp;&nbsp;//delay&nbsp;time<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(us--);<br />}<br />进行的延时。<br />延时时我关闭了中断。用的是<br />OS_ENTER_CRITICAL()<br />延时完毕<br />OS_EXIT_CRITICAL();<br />但是为什么延时会不准确呢。
sodwell 发表于 2007-9-19 21:11 | 显示全部楼层

re

为什么你不用系统自带的延时,而自己写呢
 楼主| gql1123 发表于 2007-9-20 08:49 | 显示全部楼层

因为关中断

因为有几处关中断的原因系统延时不准确。
Ice_River 发表于 2007-9-20 09:58 | 显示全部楼层

你定义微秒就是 微秒延时吗?

2楼说的对!
 楼主| gql1123 发表于 2007-9-21 10:01 | 显示全部楼层

哈哈

我自己定义的是用语句延时,而操作系统是用定时器中断。因为我在程序中有几处关中断时间比较长。所以操作系统带的延时程序就不准确了,而我自己做的延时程序是用示波器测出来的。并且延时的时候&nbsp;关闭了中断。所以应该比较准确。<br />现在我发现问题了,是因为我做了一个延时程序,而两个任务调用。我把那一个延时改成两个延时就好了。<br />但是我不太了解什么原因,因该不是重入的问题。因为那个延时函数里全是局部变量。啊。
embed9527 发表于 2007-9-24 12:17 | 显示全部楼层

中断都关了,跟多少个任务调用就没有关系

中断都关了,跟多少个任务调用就没有关系<br />临界硬延时期间,其他任务就不会执行,应该是延时就是问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

34

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部