打印

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

[复制链接]
3738|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gql1123|  楼主 | 2007-9-19 18:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在用ARM7上系统UCOS2。
其中有一段程序需要比较精确的延时。
我用的自己做的延时语句
void delay (uint16 us)   //delay time
{
      while(us--);
}
进行的延时。
延时时我关闭了中断。用的是
OS_ENTER_CRITICAL()
延时完毕
OS_EXIT_CRITICAL();
但是为什么延时会不准确呢。

相关帖子

沙发
sodwell| | 2007-9-19 21:11 | 只看该作者

re

为什么你不用系统自带的延时,而自己写呢

使用特权

评论回复
板凳
gql1123|  楼主 | 2007-9-20 08:49 | 只看该作者

因为关中断

因为有几处关中断的原因系统延时不准确。

使用特权

评论回复
地板
Ice_River| | 2007-9-20 09:58 | 只看该作者

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

2楼说的对!

使用特权

评论回复
5
gql1123|  楼主 | 2007-9-21 10:01 | 只看该作者

哈哈

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

使用特权

评论回复
6
embed9527| | 2007-9-24 12:17 | 只看该作者

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

中断都关了,跟多少个任务调用就没有关系
临界硬延时期间,其他任务就不会执行,应该是延时就是问题。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

34

帖子

1

粉丝