打印
[ZLG-ARM]

UCOS2和延时的问题

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

相关帖子

沙发
pengxiaowu| | 2007-9-19 21:58 | 只看该作者

回复:UCOS2和延时的问题

怎么不准确呢?你需要精确到多少us?
如果用定时器,会很准确

使用特权

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

定时器

定时器的定时时间和中断有关。在程序中我有个地方关中断关了200us
我要求的时间延时在10us以内。所以我自己写了延时程序。并且用
示波器量过了。延时的时候我已经关中断了应该准确啊,可是有时候准确,有时候就不准确了,不知道什么原因会影响到时间的延时的准确性。

使用特权

评论回复
地板
pengxiaowu| | 2007-9-22 00:35 | 只看该作者

RE:定时器

你的“延时的不准确性”是怎么测得的你,能否详细点?

使用特权

评论回复
5
gql1123|  楼主 | 2007-9-26 08:44 | 只看该作者

用示波器测得

只要延时对了就能用它控制一个东西,否则,控制失败。请问
void delay (uint16 us)   //delay time
{
      while(us--);
}


void delay (uint16 us)   //delay time
{
      uint32 i;
      i = us;
      while(i--);
}
有什么区别吗?

使用特权

评论回复
6
wen2204| | 2007-10-7 09:02 | 只看该作者

是不是因为时钟节拍的原因?

时钟节拍应该是不能关掉的吧
那不系统都没时钟了

使用特权

评论回复
7
gql1123|  楼主 | 2007-10-8 13:47 | 只看该作者

为什么呢?

为什么呢。大虾给指点下吧

使用特权

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

本版积分规则

5

主题

34

帖子

1

粉丝