野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14724|回复: 10

[ucos] 求助:关于ucos iii测试节拍延时函数OSTimeDly()

[复制链接]
发表于 2016-9-18 14:08:09 | 显示全部楼层 |阅读模式
OSTimeDly()延时函数是基于节拍,而这节拍选择采用Systick时钟。怎么理解OSTimeDly()是软件延时?不应该是精确延时吗?

在火哥的   测试节拍延时函数的延时时间  例程中, 对照PDF文档,结果为 QQ图片20160918140718.png    如何理解所说的OSTimeDly()是软件延时,从而造成不准确?


说明:在该工程中,只有  测试节拍延时函数的延时时间  这一个任务在。





回复

使用道具 举报

 楼主| 发表于 2016-9-18 14:35:43 | 显示全部楼层
有没有大神可以帮助~~
回复 支持 反对

使用道具 举报

发表于 2016-9-18 14:52:04 | 显示全部楼层
它是使用systick做时基,但会因为系统调度的原因导致会稍有误差
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-9-18 15:04:01 | 显示全部楼层
当只有一个任务的时候,即只有测试延时时间这一个任务时,调度这个一个任务而产生误差?

截图文档中为什么将这个称为是软件延时呢?   
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-18 15:04:28 | 显示全部楼层
flyleaf 发表于 2016-9-18 14:52
它是使用systick做时基,但会因为系统调度的原因导致会稍有误差

当只有一个任务的时候,即只有测试延时时间这一个任务时,调度这个一个任务而产生误差?

截图文档中为什么将这个称为是软件延时呢?   
回复 支持 反对

使用道具 举报

发表于 2016-9-19 08:34:07 | 显示全部楼层
软件延时有点误差是正常的。
需要精确的延时,请使用硬件定时器来实现。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-27 09:58:41 | 显示全部楼层
♂荻夜 发表于 2016-9-19 08:34
软件延时有点误差是正常的。
需要精确的延时,请使用硬件定时器来实现。

软件延时是有误差,但是为什么说OSTimeDly()是软件延时呢?是写错了吗?
回复 支持 反对

使用道具 举报

发表于 2016-11-7 00:14:02 | 显示全部楼层
我的理解是OSTimeDly()使用之前是不是要建立一个OS_TMR的对象,然后是基于时间节拍工作,称为软件定时器的原因可能是它的工作过程和定时器差不多,而且在正常工作的时候还有一个回调函数,所以整个看起来就像是定时器初始化,然后写个中断服务函数的意思。但是硬件定时器数量是有限制的,而通过他创建的定时器数量按书上说的理论上是可以无限多个的,叫软件定时器也是对的吧!
回复 支持 反对

使用道具 举报

发表于 2016-11-7 00:19:03 | 显示全部楼层
但是你说的问题好像也有道理,可能是资料有点小错误吧!作者的原意应该不是那样的吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-9 21:06:47 | 显示全部楼层
b_wolf 发表于 2016-11-7 00:14
我的理解是OSTimeDly()使用之前是不是要建立一个OS_TMR的对象,然后是基于时间节拍工作,称为软件定时器的 ...

谢谢你的回答。
回复 支持 反对

使用道具 举报

发表于 2021-9-19 10:52:51 | 显示全部楼层
问题已解决
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-21 23:18 , Processed in 0.032060 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表