[求助] 【已解决】RTX中的os_itv_wait()的使用问题

Tobey   2016-10-7 21:10 楼主
当前一个任务需要限定在1s内执行一次,不能太快也不能太慢,,, 于是想到了RTX的延迟函数os_itv_wait(),根据文档描述,我的理解是: 使用os_itv_set(Time),在需要执行的代码后跟上os_itv_wait()函数后, 执行代码时间 + 延迟时间 = Time时才再次进入本任务,,, 结果:不管我把os_itv_wait()放在for的第一行还是最后一行,最终再次 进入本任务的时间间隔都不是1s,, 请问这是怎么回事?是我的使用方式不对还是? 下面是RTX文档相关资料及调试结果: 文档: 33.png 调试结果: 11.jpg 22.jpg 本帖最后由 Tobey 于 2016-10-7 21:38 编辑

回复评论 (5)

函数 os_dly_wait 实现的是周期性延迟,而函数 os_itv_wait 实现的是相对性延迟,所以你用os_dly_wait函数
点赞  2016-10-7 21:25
引用: qwerghf 发表于 2016-10-7 21:25
函数 os_dly_wait 实现的是周期性延迟,而函数 os_itv_wait 实现的是相对性延迟,所以你用os_dly_wait函数

我需要实现的就是周期性延迟,就是这个任务中的操作在1s内仅执行一次,找到问题的原因了,问题出在同一个任务中,os_dly_wait函数和os_itv_wait函数不能一起使用,但是我需要在这个任务的另一个地方实现一个1ms的延迟,再次使用os_itv_set和os_itv_wait貌似就将先前设置的等待时间间隔给覆盖掉了,,,请问这该怎么办?
点赞  2016-10-7 21:37
可以用软件定时器
点赞  2016-10-7 21:44
引用: qwerghf 发表于 2016-10-7 21:44
可以用软件定时器

明白了,多谢!
点赞  2016-10-8 20:34
引用: qwerghf 发表于 2016-10-7 21:44
可以用软件定时器

发现我理解错了~~ 还是没整明白怎么使用软件定时器实现延迟,,,
具体是我想实现一个延迟函数,每次调用该函数时延迟1ms,,,
原先采用os_dly_wait(1)实现的,现在因为任务中需要使用os_itv_wait(),因此
不能使用os_dly_wait(),,,请问使用软件定时器具体是该如何实现呢?


点赞  2016-10-9 18:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复