【RTX51 Tiny初级】09_K_TMO与K_IVL的区别和使用场合


01 - K_TMO与K_IVL的区别

  调用os_wait() / os_wait2()指定K_TMO / K_IVL参数都能让任务进入waiting状态,然后等待一段时间后恢复到ready状态,K_TMO和K_IVl的区别有:
  1、计算的起点K_TMO是以当前调用wait / wait2的时间为起点,K_IVL是以上一次任务结束为起点。
  2、是否包含任务本身执行时间K_TMO不包含,K_IVl包含。
  通过一个时序图说明情况,如下图,有3个任务,分别是task_0/1/2,假设3个任务的自身执行时间task_x code = 1ms:
    task_0没有调用任何阻塞API。
    task_1使用K_TMO参数等待3ms超时。
    task_2使用K_IVL等待3ms间隔。
  并假设调度器先按照task_0、task_1、task_2的顺序调度任务:
在这里插入图片描述

  • task_0先执行1ms,SysTick=1
  • task_1执行1ms,然后等待3ms超时,SysTick=2
  • task_2执行1ms,然后等待3ms间隔,SysTick=3
  • task_0执行2ms,此时只有task_0可执行,故连续执行2ms,SysTick=5
  • task_2执行1ms,注意,由于K_IVL包含任务自身执行时间,离上一次task_2结束已经过去2ms,所以接下来要执行task_2,SysTick=6
  • task_1执行1ms,task_1等待的时间已经到了并且超时,所以执行task_1,SysTick=7
  • task_0执行1ms,SysTick=8
  • task_2执行1ms,离上一次task_2结束已经过去2ms,接下来执行task_2,SysTick=9
    ……

  能够观察到,K_TMO是超时的意思,它能够保证一定会等到足够的时间,但是不一定准确,时间轴上可能是不连续的,比如上图而言,task_1只在SysTick=11的时候准确等待了3ms,而前面SysTick=6的时候等待了4ms。
  K_IVL保证间隔的时间是准确的,在时间轴上是连续的。对于code = x(ms),wait() / wait2() = y(ms),调用API后,K_TMO将在 >=(x+y) 的时间执行完成,K_IVL将在 y 时间执行完成。

  想超时等待一段时间,用K_TMO,想做周期性动作,用K_IVL(官网文档:http://www.keil.com/support/docs/451.htm)。

02 - 总结

  • 想超时等待一段时间,用K_TMO,想做周期性动作,用K_IVL

  • 01-【RTX51 Tiny入门】-RTX51 Full & Tiny简介
  • 02-【RTX51 Tiny入门】-资源占用情况
  • 03-【RTX51 Tiny入门】-内核组成
  • 04-【RTX51 Tiny入门】-任务和调度器
  • 05-【RTX51 Tiny入门】-OS API函数
  • 06-【RTX51 Tiny入门】-查看RTX51 Tiny官方例程
  • 07-【RTX51 Tiny入门】-使用RTX51 Tiny
  • 08-【RTX51 Tiny入门】-Conf_tny.A51配置文件
  • 09-【RTX51 Tiny初级】-K_TMO与K_IVL的区别和使用场合
  • 10-【RTX51 Tiny初级】-os_send_signal()和os_set_ready()的区别和使用场合
  • 11-【RTX51 Tiny初级】-os_wait和os_switch_task区别和使用场合
  • 12-【RTX51 Tiny初级】-解决多重调用问题(MULTPLE CALL TOSEGMENT)
  • 13-【RTX51 Tiny高级】-进行Task的划分与拆分
  • 14-【RTX51 Tiny高级】-修改默认产生时间片的定时器T0为其它定时器
  • 15-【RTX51 Tiny高级】-考虑Round-Robin的开启与关闭
  • 16-【RTX51 Tiny高级】-解决Task之间的通讯和耦合问题
  • 17-【RTX51 Tiny高级】-Task ID隐藏的优先级问题
  • 18-【RTX51 Tiny高级】-系统架构的设计
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值