一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

RTOS相对延时和绝对延时的区别

来源:strongerHuang 作者:strongerHuang 发布时间:2022-08-12

摘要: 嵌入式软件代码中延时是很常见的,只是延时种类有很多,看你用什么延时。周期性(固定一个时间)去处理某一件事情。你会通过什么方式去实现?比如:间隔10ms去采集传感器的数据,然后通过一种算法计算出一个结果,最后通过串口发送出去。

嵌入式软件代码中延时是很常见的,只是延时种类有很多,看你用什么延时。

一个延时的问题

问题:周期性(固定一个时间)去处理某一件事情。你会通过什么方式去实现?

比如:间隔10ms去采集传感器的数据,然后通过一种算法计算出一个结果,最后通过串口发送出去。

可能对于很多习惯裸机编程的读者,首先想到的是:利用定时器,定时10ms中断,在中断里面处理。

中断函数适合处理简单数据,不适合算法、通信等需要长时间占用CPU的处理。

对计时精度要求比较高的地方适合定时器,像本章节说的周期性采集传感器数据,要求不适合很高,那么就引入本文说的绝对延时。
在实时操作系统FreeRTOS任务中,利用vTaskDelayUntil绝对延时即可完美解决这个问题。

相对延时和绝对延时的含义

本文拿FreeRTOS中相对延时函数vTaskDelay,绝对延时函数vTaskDelayUntil来说明。

相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间(参数:滴答值)结束。

绝对延时:指每隔指定的时间(参数:滴答值),执行一次调用vTaskDelayUntil()函数的任务。

文字描述可能不够直观理解,下面章节结合代码例子、延时值(IO高低变化波形)、任务执行图来详细讲述一下他们的区别。

相对延时和绝对延时区别

以实际代码为例说明:一个任务中,添加一个10ms系统延时,然后,在执行任务(耗时1ms左右,例子以延时代替)。

相对延时代码:

1.jpg

绝对延时代码:

2.jpg

说明:

1.TestDelay这个延时函数仅仅用于测试(延时1ms),用于代替采集、算法、发送等耗时时间。

2.两个代码唯一区别在于系统延时不同,一个vTaskDelay(10);,一个vTaskDelayUntil(&xLastWakeTime, 10);
3.系统时钟频率为1000,也就是上面系统延时10个滴答,即10ms。
看到代码,你想到了他们输出结果的差异吗?

来看下结果的差异:用PA0这个引脚输出的高低电平,得出延时时间。

相对延时结果:
3.png

绝对延时结果:

4.png

结果为:相对延时的周期为系统延时10ms + 执行任务1ms的时间,总共11ms时间。绝对延时的周期即为10ms时间.

换一种方式看区别

如果上面的区别还没明白,再来讲一个更容易理解的区别,通过文字 + 任务执行图来说明。

1.相对延时

先看任务执行图,按照上面代码的方式呈现:

5.jpg

这里会牵涉到操作系统任务切换、高优先级任务抢占等一些原理,若不了解,请转移直到了解再回来。

上电,TEST任务进入延时(阻塞)状态,此时系统执行其他就绪任务。FreeRTOS内核会周期性的检查TEST任务的阻塞是否达到,如果阻塞时间达到,则将TEST任务设置为就绪状态,如果就绪任务中TEST任务的优先级最高,则会抢占CPU,再次执行任务主体代码,不断循环。
TEST任务每次系统延时都是从调用延时函数vTaskDelay()开始算起的,所以叫相对延时。
从上图可以看出:

如果执行TEST任务的过程中发生中断,或者具有更高优先级的任务抢占了,那么TEST任务执行的周期就会变长,所以使用相对延时函数vTaskDelay(),不能周期性的执行TEST任务。

2.绝对延时

6.jpg

代码中定义的变量xLastWakeTime,其实是用来保存上一次的系统计数器值(方便检测下一个延时时间是否到来)。

和上面相对延时程序执行图比较,可以看出,系统延时的时间包含了程序执行的时间。即时中途有中断,或更高优先级任务打断,不会影响下一次执行的时间(也就是这个周期不会变,当然,打断时间不能超过系统延时值)。
提示:图片中添加了一段话:一般来说,程序执行时间要小于总间隔时间(10ms)。
如果打断时间太长,回来之后延时都超过了,则会立马执行程序,不会再延时(任务不会再阻塞延时)。
声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

微信扫一扫,一键转发

关注“华强商城“微信公众号

相关阅读
  • 年销售将突破1亿!这厂商工控IGBT可与国际大厂pin to pin替换

    IGBT是由MOS、BJT组成的复合全控型功率半导体,兼具MOS输入阻扛高、BJT导通电压低的两大优势,适用于高压、大电流领域,被誉为电力电子行业的“CPU”。最近,芯八哥“走进产业链”栏目记者采访了国内一家快速发展的IGBT新兴企业—森未

  • 量产200+型号,交付超3亿颗!拆解MCU厂商的订单密码

    近年来,新冠疫情和国际环境变化交织共振,全球半导体供应链出现阶段性及结构性的失调。尽管面对复杂多变的国际贸易环境与供应链受限的状况,灵动微电子持续加大研发投入,坚定推进产品和技术创新,重点布局并研发与市场高度契合的新产品,使得公司迎来快速发

  • 闻泰科技半年报超预期:半导体业务净利大涨31.72%,产品集成业务迎来新动能

    8月26日A股收盘后,闻泰科技公布了2022年上半年财报。根据财报显示,公司上半年营收达284.96亿元,同比增长15.05%;实现归母净利润约11.82亿元,同比小幅下滑4.11%,扣非净利润约11.62亿元,同比小幅下滑1.71%。如果单看二季度的数据的话,其二季度归母净利润为6.79亿元,环比增长35%,这也反映了闻泰科技的归母净利润正在逐季改善。

  • 强制员工休假被批违法,群创紧急回应

    8月24日消息,由于近期面板市场持续供过于求,面板价格也持续下行,一些面板厂纷纷调降产能利用率降至5至7成,在此背景之下,面板厂也鼓励员工休假。群创于8月24日发布公告,公布了公司的休假规划,内部系统将统一扣除假期,强制员工休假。

  • 嵌入式开发 | RTOS任务堆栈大小与代码量有关吗?

    有小伙伴问了这样的问题:我有个任务中的代码量很多,是不是这个任务的堆栈需要分配很大才行?其实,并不是代码量越大,就分配更多堆栈空间,主要取决于你任务中包含的“临时变量”。市面上很多RTOS的任务都是需要提前分配堆栈大小,也就是在创建任务的时候分配好堆栈的大小。

  • 服务器远端管理控制芯片大厂信骅:确有客户下修订单,三季度营收或将环比下滑19.2%

    8月24日消息,据中国台湾媒体报道,近期服务器市场杂音不断,外资开始看淡后市,远端服务器管理控制器芯片(BMC)龙头信骅董事长林鸿明昨(23)日对外首次证实,近期确实有客户下修订单,三季度业绩将中止单季营收创新高走势,预估介于一季度和二季度之间,环比将下滑19.2%以内。

  • 为何YouTube、字节、快手们纷纷自研云端视频处理器?

    近年来,随着抖音、快手等众多视频应用的火爆,以及用户对于高质量视频的需求的不断增长,云端服务器当中的CPU 和 GPU 已无法满足处理海量视频数据需求。对此,字节跳动早已开始自研云端视频处理器(VPU),快手也于今年8月曝光了自研的云端智能视频处理器SL200。而作为全球最大的视视频应用YouTube也早已开始自研云端智能视频处理器,并且目前已经演进到了第二代。

  • 射频芯片大厂Qorvo砍单,或将向联电支付1.1亿美元违约金

    8月25日消息,据Digitimes援引射频芯片和组件行业的消息人士的话报导称,射频芯片大厂Qorvo在需求方不确定性日益增加的情况下,削减了联电 (UMC) 的晶圆投片量,但这违反了其与联电的 LTA 合同(长期合同)。报导称,2022年下半年消费电子产品库存调整已成定局,其中4G、5G智能手机特别是Android阵营需求大打折扣,又以中低端机种受伤最深,这已经连带影响高通、联发科等手机应用处理器设计大厂营运展望。

  • 理想汽车功率半导体新基地开建:2024年投产,年产240万只碳化硅半桥功率模块!

    8月24日消息,理想汽车功率半导体研发及生产基地在江苏苏州高新区正式启动建设,这标志着理想汽车正式启动下一代高压电驱动技术的自主产业链布局。理想汽车功率半导体研发及生产基地是理想汽车自研核心部件的战略布局之一,主要专注于第三代半导体碳化硅车规功率模块的自主研发及生产,旨在打造汽车专用功率模块的自主设计和生产制造能力。

  • C语言函数返回1和返回0究竟哪个好?

    一般来说,除了新手和学习之外,没有人会将大段的C语言代码全部塞入 main() 函数。为了遵循复用率高、耦合性低的原则,都会将代码拆分不同的功能模块,并封装成函数。C语言代码的组合千变万化,因此函数的功能可能会比较复杂,不同的输入,常常产生不同的输出结果。

  • 笔电厂商持续砍单!惠普第五度下修出货目标,较年初已砍去47%

    8月24日消息,由于疫情带来的红利逐渐消退,再加上通货膨胀等因素的影响,近两个季度来消费类电子市场需求持续疲软,PC品牌厂商也纷纷多次下修全年出货目标。进入第三季后,传统旺季不旺、7月出货甚至不若第二季单月表现,更是加重了相关业者的担忧。据供应链消息指出,惠普近期再度下修全年出货目标至4300万台,同比减少30%,这也是惠普在今年内第五度下修笔记本电脑出货目标。

调查问卷

请问您是:

您希望看到什么内容: