FreeRTOS中相对延时和绝对延时的区别

在公众号列表中,长按我的公众号,置顶公众号,就可以随时看到我。

640?wx_fmt=png

相信许多朋友都有过这么一个需求:固定一个时间(周期)去处理某一件事情。

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

你会通过什么方式解决呢?

解决办法

很多人肯定首先想到的是:利用定时器,定时10ms中断,在中断里面处理。

这种利用定时器中断解决的办法,在处理程序耗时很短(微秒级一下)的情况下是可以的。但是,如果处理程序耗时较长(几十微妙,甚至毫秒级),显然在中断里面处理不现实。

因此,就引出了今天的绝对延时。在实时操作系统FreeRTOS任务中,利用vTaskDelayUntil绝对延时即可完美解决这个问题。

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

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

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

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

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

相对延时和绝对延时区别

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

相对延时代码

640?wx_fmt=png

绝对延时代码

640?wx_fmt=png

提示

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

2.两个代码唯一区别在于系统延时不同,一个vTaskDelay(10);,一个vTaskDelayUntil(&xLastWakeTime, 10);

3.系统时钟频率为1000,也就是上面系统延时10个滴答,即10ms。

看到代码,你想到了他们输出结果的差异吗?

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

相对延时结果

640?wx_fmt=png

绝对延时结果

640?wx_fmt=png

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

换一种方式看区别

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


1.相对延时

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

640?wx_fmt=png

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

上电,TEST任务进入延时(阻塞)状态,此时系统执行其他就绪任务。FreeRTOS内核会周期性的检查TEST任务的阻塞是否达到,如果阻塞时间达到,则将TEST任务设置为就绪状态,如果就绪任务中TEST任务的优先级最高,则会抢占CPU,再次执行任务主体代码,不断循环。

TEST任务每次系统延时都是从调用延时函数vTaskDelay()开始算起的,所以叫相对延时。

从上图可以看出:

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

2.绝对延时

640?wx_fmt=png

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

和上面相对延时程序执行图比较,可以看出,系统延时的时间包含了程序执行的时间。即时中途有中断,或更高优先级任务打断,不会影响下一次执行的时间(也就是这个周期不会变,当然,打断时间不能超过系统延时值)。

提示:图片中添加了一段话:一般来说,程序执行时间要小于总间隔时间(10ms)。

如果打断时间太长,回来之后延时都超过了,则会立马执行程序,不会再延时(任务不会再阻塞延时)。

这次应该能理解了吧?

推荐阅读:

1.定时器输出的PWM频率范围及占空比精度

2.STM32如何实现可调频率、占空比的PWM波形,且可指定输出脉冲个数?

3.关于STM32的计数和延时

最后

  1. 置顶,找我容易;

  2. 点赞,分享你愿意吗?

  3. 公众号二维码在下面,看你是否考虑关注下!

640?wx_fmt=jpeg

长按识别二维码 关注


640

赞赏是对作者的认可与支持!

strongerHuang
关注 关注
  • 17
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
C语言精确微秒级的延时
07-18
在使用C语言编程时延时程序是非常常见的,但是实现一个精确的延时是不太容易的,在给一个朋友的公司产品做维护时,发现一段代码,可以实现微妙级的延时。看起来代码非常简单。但是我以前没有想到过。
STM32精确延时方法
03-10
STM32精确延时的几种方法
FreeRTOSdelay定时器
最新发布
qq_43213240的博客
04-19 306
FreeRTOS之滴答定时器,设置不进行任务切换的延时函数。
NXP i.MX RT1052 FreeRTOS实战:任务延时列表的实现
12-01
NXP i.MX RT1052 FreeRTOS实战。 NXP i.MX RT1052驱动程序。 资源代码可直接编译、运行。
跟着野火学FreeRTOS:第一段(任务延时列表)
12-24
跟着野火学FreeRTOS:第一段(任务延时列表)
RTOS相对延时绝对延时区别
strongerHuang
08-12 643
关注+星标公众号,不错过精彩内容作者 |strongerHuang微信公众号| strongerHuang嵌入式软件代码延时是很常见的,只是延时种类有很多,看你用什么延时。一个延时的问题问题:周期性(固定一个时间)去处理某一件事情。你会通过什么方式去实现?比如:间隔10ms去采集传感器的数据,然后通过一种算法计算出一个结果,最后通过串口发送出去。可能对于很多习惯裸机...
FreeRTOS系统延时函数分析
qq_43460068的博客
02-17 4226
FreeRTOS提供了两个系统延时函数,相对延时函数vTaskDelay()和绝对延时函数vTaskDelayUntil()。相对延时是指每次延时都是从任务执行函数vTaskDelay()开始,延时指定的时间结束,绝对延时是指每隔指定的时间,执行一次调用vTaskDealyUntil()函数的任务,换句话说,就是任务以固定的频率执行。相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束。绝对延时:指将整个任务的运行周期看作一个整体,适用于需要按照一定频率运行的任务。
FreeRTOS入门第五节> FreeRTOS时间管理
sinat_58149788的博客
08-05 253
学习、欧里给,学就完了FreeRTOS延时函数分为绝对延时相对延时,其绝对延时是使用vTaskDelayUntil();函数,相对延时使用vTaskDelay();使用延时之前必须打开INCLUDE_vTaskDelay相对延时: 总延时=任务处理时间+vTaskDelay()时间绝对延时:总延时=任务处理时间+(vTaskDelayUntil()-任务处理时间);...
FreeRTOS——delay函数
weixin_63780683的博客
11-16 406
【代码】FreeRTOS——delay函数。
FREERTOS使用Delay函数
lsAmorFati的博客
10-30 1231
FREERTOS使用Delay函数
V5-311_FreeRTOS实验_周期性延迟和相对性延迟函数.rar
01-20
V5-311_FreeRTOS实验_ 周期性延迟和相对性延迟函数
FreeRTOS 低功耗 Tickless 模式
Bit_Dong的博客
05-05 1704
在之前介绍获取任务运行时间信息的时候可以看出,一般的简单应用处理器大量的时间都在处理空闲任务,所以我们就可以考虑当处理器处理空闲任务的时候就进入低功耗模式,当需要处理应用层代码的时候就将处理器从低功耗模式唤醒。相比于前面两种低功耗模式,待机模式的功耗最低。(9)、configPRE_SLEEP_PROCESSING()是个宏,在进入低功耗模式之前可能有一些其他的事情要处理,比如降低系统时钟、关闭外设时钟、关闭板子某些硬件的电源等等,这些操作就可以在这个宏完成,后面会讲解这个宏如何使用。
FreeRTOS篇】延时函数
m0_66492811的博客
08-21 305
延时函数
合宙Air724UG LuatOS-Air core API--rtos
l531798151的博客
07-08 410
param1 string 设备名称 0(本地空间),1(SD卡),2(U盘),3(外挂flash,LCD复用管脚,V_LCD供电),4(外挂flash,使用GPIO pin脚复用,V_PAD_1V8供电)param1 string 设备名称 0(本地空间),1(SD卡),2(U盘),3(外挂flash,LCD复用管脚,V_LCD供电),4(外挂flash,使用GPIO pin脚复用,V_PAD_1V8供电)param2 string 返回值单位 1(返回值单位kb),0(返回值单位Bytes)
FreeRTOS学习(八) 延时函数
热门推荐
longjingcha110的博客
01-17 1万+
声明及感谢: 跟随正点原子资料学习, 在此作为学习的记录和总结 环境 keil , stm32f103 FreeRTOS延时函数有两个 分别是: vTaskDelay() vTaskDelayUntil() 例程:http://www.freertos.org/vtaskdelayuntil.html ...
freertos与rtthread内核实现的不同处
weixin_46214189的博客
09-13 7192
标题
Freertos基础入门】2个FreertosDelay函数
m0_62599305的博客
08-15 1225
本系列基于stm32系列单片机来使用freerots任务管理是实时操作系统(RTOS)的核心功能之一,它允许开发者以并发的方式组织和管理多个任务。FreeRTOS 是一个流行的开源RTOS,它提供了强大的任务管理功能,让开发者能够轻松创建和控制任务。本文将介绍 FreeRTOS 的任务管理功能,包括任务的创建、删除、挂起、恢复和优先级控制等方面的内容。任务管理是 FreeRTOS 提供的一个强大功能,它允许开发者以并发的方式组织和管理多个任务。
【11】FreeRTOS延时函数
小浪宝宝的博客
02-22 3846
函数描述相对延时绝对延时相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束(任务被阻塞的时间,到调用此函数开始的时间);绝对延时:指将整个任务的运行周期看成一个整体,适用于需要按照一定频率运行的任务(整个任务执行的时间,从头到尾的时间)。[^1]上图的为绝对延时时间(假如绝对延时时间为100ms,那么以下三部分之和为100ms),包括以下三部分:(1)为任务主体,也就是任务真正要做的工作;
freertos如何延时
07-25
FreeRTOS ,可以使用 `vTaskDelay()` 函数进行延时操作。 `vTaskDelay()` 函数的参数是一个以系统时钟节拍为的延时时间。它会使当前任务进入阻塞状态,并将 CPU 时间让给其他任务,直到延时时间结束。 例如,如果要延时 100 毫秒,可以使用以下代码: ```c vTaskDelay(pdMS_TO_TICKS(100)); ``` 其,`pdMS_TO_TICKS()` 是一个宏定义,用于将毫秒转换为系统时钟节拍数。该宏定义的实现可以根据系统的配置进行调整。 需要注意的是,延时时间是以最小任务时间片(Tick)为单位的,因此实际延时时间可能会略微大于指定的时间。另外,使用延时函数时需要确保 FreeRTOS 的任务调度器已经启动,否则延时函数将无效。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Keil(MDK-ARM)介绍、下载、安装与注册 321512
  • 让程序员崩溃的瞬间(非程序员勿入) 292133
  • STM32 ST-LINK Utility介绍、下载、安装、使用方法 259065
  • STM32CubeMX介绍、下载与安装 229120
  • Keil(C51)介绍、下载、安装与注册 227532

分类专栏

  • STM32CubeMX+IDE 付费
  • Keil系列教程 13篇
  • 通信教程 7篇
  • STM8S系列教程 10篇
  • IAR系列教程 7篇
  • FreeRTOS系列教材 6篇
  • EWSTM8系列教程 8篇
  • MAVLink学习之路 3篇
  • CANOpen系列教程 6篇
  • ST-Link资料 6篇
  • printf系列教程 8篇
  • STM32CubeMX系列教程 6篇
  • STM32F1 31篇
  • 汇总 5篇
  • MDK-ARM 2篇
  • STM32F0 14篇
  • STM32F4 7篇
  • UCOS 11篇
  • STM32 5篇
  • STM32CubeMX 9篇
  • IAR 10篇
  • STM32 ST-LINK Utility 1篇
  • Keil 14篇
  • STM32工具 1篇
  • STM32综合文章 2篇
  • 综合 10篇
  • STM8S 11篇
  • FreeRTOS 6篇
  • EWSTM8系列教程 9篇
  • MAVLink学习之路 3篇
  • CANOpen系列教程 6篇
  • ST-Link资料 6篇
  • STM32CubeIDE 1篇
  • printf系列教程 8篇

最新评论

  • STM32CubeMX介绍、下载与安装

    好家伙VCC: 博主写的真棒!我最近也写关于使用 STM32CubeMX 开发,STM32+openmv通信的 PID 控制 遥控 避障 跟随循迹的文章和视频,大家可以一起交流学习一下,这是文章:https://blog.csdn.net/qq_46187594/article/details/138110155?spm=1001.2014.3001.5502 这个是视频:https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click

  • PCB设计当中<过孔>的设计规范

    可期⇆: 长芝士了

  • 物联网常见的几种通信方式

    美梦少年: 有线传输那个图有错,rs232串口

  • RTOS中的任务是线程、进程、还是协程?

    ꧁꫞꯭࿈诗༒尔࿈꫞꧂: 为啥会有好多句子不通呢?

  • 使用J-Link也能实现串口打印输出数据的功能

    三色马: 你好 程序正在运行 通过JLINK使用RTT,程序会复位吗

大家在看

  • 一道电梯题,暴打国产大模型! 374
  • 聊聊大模型:开源LLaMA背后的底层逻辑与赚钱之道?大模型的发展瓶颈?如何一键部署LLaMA3? 307
  • 史上最强!ANSYS Maxwell高级电机培训教程-Module 01: 几何建模 全65页 1087
  • 可验证大模型输出、训练来源,斯坦福提出“统一归因”框架 195
  • 人人都是程序员—AI大模型的应用远比你想像的要简单 471

最新文章

  • 在MCU上实现AI将成为常态
  • 分享一个嵌入式通用FIFO环形缓冲区实现库
  • 瑞萨RA8系列教程 | 瑞萨RA8单片机IO中断配置
2024
06月 2篇
05月 49篇
04月 47篇
03月 39篇
02月 31篇
01月 43篇
2023年347篇
2022年314篇
2021年512篇
2020年543篇
2019年256篇
2018年102篇
2017年66篇
2016年129篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongerHuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司绍兴网络推广报价铁岭网站建设设计公司苏州优秀网站设计枣庄百度标王公司汕头网站优化推广常德百度标王价格台州外贸网站制作报价秦皇岛外贸网站建设报价襄阳推广网站报价舟山网站优化按天计费哪家好贺州网站建设哪家好松岗百姓网标王推广报价郑州营销网站推荐湘潭关键词排名多少钱泉州设计网站价格昭通百度竞价青岛优秀网站设计报价清远seo价格大同建站中山网站优化价格益阳网站制作多少钱深圳关键词按天收费公司长治至尊标王海南建站价格金华模板制作哪家好重庆网站开发报价和县推广网站价格海西网络营销多少钱泰安网站定制多少钱庆阳百搜标王多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化