【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
    评论
### 回答1: 《rtx51_tiny高级编程.pdf》是一本关于RTX51_Tiny高级编程的书籍。RTX51_Tiny是基于Intel 8051单片机的一种低成本实时操作系统。本书主要介绍了如何利用RTX51_Tiny实现高级编程技术。 该书首先对RTX51_Tiny的基本概念进行了解释,并介绍了其基本组成和工作原理。然后,书中详细介绍了如何使用RTX51_Tiny的任务管理机制,包括任务的创建、删除、挂起和恢复等。此外,还介绍了如何利用消息队列、信号量和互斥量等机制实现任务间的通信和同步。 除此之外,书中还介绍了如何使用RTX51_Tiny的定时器和时钟功能,实现任务的定时调度和时序控制。同时,还介绍了中断处理和异常处理的机制和技巧。 在高级编程方面,该书介绍了如何优化程序的性能和资源利用率。通过使用RTX51_Tiny提供的工具和API,可以进行任务的优先级调整、资源管理和内存管理等操作,提高程序的效率和可靠性。 此外,本书还介绍了如何进行调试和错误处理,包括使用调试工具和技巧、处理异常情况和错误码等。 总的来说,《rtx51_tiny高级编程.pdf》是一本全面而深入的关于RTX51_Tiny高级编程的指南,对于想要学习和应用RTX51_Tiny的开发者来说是一本宝贵的参考资料。 ### 回答2: 对于RTX51_Tiny高级编程.pdf,它是一本与嵌入式系统开发相关的高级编程指南。RTX51_Tiny是一个实时操作系统内核,常用于51系列单片机的开发。本书主要介绍了如何使用RTX51_Tiny进行高级编程。 该书包含了以下几个方面的内容: 首先,介绍了RTX51_Tiny的概念和架构。阅读者可以了解它的基本原理和特点,以及与其他操作系统内核的比较。 其次,详细讲解了RTX51_Tiny的编程接口和常用函数。这些函数包括任务管理、中断处理、时间管理、信号量等等,通过这些函数的使用,开发者可以轻松构建复杂的实时系统。 此外,书中还详细介绍了如何使用RTX51_Tiny进行任务调度和系统优化。通过合理的任务安排和系统配置,可以提高系统的响应速度和性能。 最后,书中还提供了一些示例代码和实际应用案例,帮助读者更好地理解和应用所学知识。这些案例涵盖了不同领域的嵌入式系统开发,包括通信、控制、数据处理等等。 总而言之,RTX51_Tiny高级编程.pdf是一本全面而实用的嵌入式系统开发指南。它适合那些已经掌握了51系列单片机基础知识,并希望深入学习和应用RTX51_Tiny的开发者。通过学习本书,读者可以更好地理解和掌握RTX51_Tiny的高级编程技巧,提升嵌入式系统开发的能力。 ### 回答3: 《rtx51_tiny高级编程.pdf》是一本关于RTX51_Tiny高级编程的电子书。RTX51_Tiny是一种用于8051系列单片机的实时操作系统(RTOS),它提供了一些高级功能和特性,可以帮助开发者更好地管理和控制嵌入式系统。 该电子书内容详实,通过阅读可以学习到RTX51_Tiny的设计原理、使用方法和相关编程技巧。书中首先介绍了RTX51_Tiny的基础知识,如任务、信号量、消息和邮箱等。然后讲解了如何在嵌入式系统中实现多任务并行执行、任务间的同步与通信等重要概念。 此外,书中还涵盖了一些常用的编程案例和技巧,例如如何在RTX51_Tiny环境下实现定时器、中断服务例程、任务切换等。这些案例和技巧可以帮助开发者更好地理解和应用RTX51_Tiny,提高系统的可靠性和性能。 总之,这本《rtx51_tiny高级编程.pdf》是一本对于学习和应用RTX51_Tiny操作系统非常有价值的电子书,适合那些对嵌入式系统开发和实时操作系统有兴趣的开发者阅读和参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值