找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 956|回复: 0
打印 上一主题 下一主题
收起左侧

RTX51-Tiny操作系统, os_reset_interval函数的使用问题

[复制链接]
跳转到指定楼层
楼主
ID:935976 发表于 2022-6-22 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
从一本中文手册上看到对os_reset_interval(ticks)的描述:

如 果 函 数 os_wait 同 时 等 待 K_IVL 和 K_SIG 事 件 , 那 么 函 数
os_reset_interval 用来校正定时器的问题。在该条件下,如果一个信号
(K_SIG)事件让函数 os_wait 退出等待,而时间间隔没有被调整的话,
那么接下来函数 os_wait 等待一个时间间隔事件,可能就不能按要求准确
延时了。
函数 os_reset_interval 允许你去复位计时器,以致接下来函数 os_wait
的调用可以达到预期的目的。”

我在实际使用中看到的都是跟在os_wait2 (K_SIG | K_IVL, ticks)后边,但看网上有的例子没有对返回结果进行判断就直接使用了os_reset_interval(ticks)校正定时器,这就有可能对以后的os_wait2(ticks)造成影响。

根据几次实验(Keil软件debug和实际上机运行),我发现影响是这样的:
1. 如果在os_wait2 (K_SIG | K_IVL, Xticks)函数执行时已经有了SIGNAL EVENT,也就是没有触发时间间隔,那么随后的os_reset_interval(Xticks)需要使用,以后再执行os_wait2(Yticks)才能实现其准确功能。
2. 如果在os_wait2 (K_SIG | K_IVL, Xticks)函数执行时,触发并完成整个时间间隔后仍然没有收到SIGNAL EVENT信号,那么就不再需要执行os_reset_interval(Xticks),如果运行了该函数,那么随后的os_wait2(Yticks)函数实际时间间隔不是标明的Yticks,而是 (Yticks-Xticks)。需要留意。
3. 如果前面没有os_wait2 (K_SIG | K_IVL, Xticks), 而使用了os_reset_interval(Xticks), 随后的os_wait2(Yticks)函数实际延时间隔同样是(Yticks-Xticks)。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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