[ZLG-ARM] UCOS2和延时的问题

[复制链接]
2987|6
 楼主| gql1123 发表于 2007-9-19 18:41 | 显示全部楼层 |阅读模式
我在用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 />但是为什么延时会不准确呢。
pengxiaowu 发表于 2007-9-19 21:58 | 显示全部楼层

回复:UCOS2和延时的问题

怎么不准确呢?你需要精确到多少us?<br />如果用定时器,会很准确<br />
 楼主| gql1123 发表于 2007-9-20 08:53 | 显示全部楼层

定时器

定时器的定时时间和中断有关。在程序中我有个地方关中断关了200us<br />我要求的时间延时在10us以内。所以我自己写了延时程序。并且用<br />示波器量过了。延时的时候我已经关中断了应该准确啊,可是有时候准确,有时候就不准确了,不知道什么原因会影响到时间的延时的准确性。
pengxiaowu 发表于 2007-9-22 00:35 | 显示全部楼层

RE:定时器

你的“延时的不准确性”是怎么测得的你,能否详细点?
 楼主| gql1123 发表于 2007-9-26 08:44 | 显示全部楼层

用示波器测得

只要延时对了就能用它控制一个东西,否则,控制失败。请问<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 />void&nbsp;delay&nbsp;(uint16&nbsp;us)&nbsp;&nbsp;&nbsp;//delay&nbsp;time<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;us;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(i--);<br />}<br />有什么区别吗?
wen2204 发表于 2007-10-7 09:02 | 显示全部楼层

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

时钟节拍应该是不能关掉的吧<br />那不系统都没时钟了
 楼主| gql1123 发表于 2007-10-8 13:47 | 显示全部楼层

为什么呢?

为什么呢。大虾给指点下吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

34

帖子

1

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