vTaskDelay和vTaskDelayUntil的区别
创作时间:
作者:
@小白创作中心
vTaskDelay和vTaskDelayUntil的区别
引用
CSDN
1.
https://m.blog.csdn.net/2301_78981010/article/details/139383368
在FreeRTOS中,vTaskDelay和vTaskDelayUntil都是常用的延时函数,但它们在延时时间的记录方式上存在本质区别。本文通过具体代码示例和逻辑分析仪的波形图,详细解释了这两个函数的工作原理,并展示了它们在实际应用中的不同效果。
二者在如何记录延时时间上存在差异,vTaskDelay延时时间是以该函数调用为始,vTaskDelayUntil则以传入的时间形参为始:
/*二者的函数原型*/
void vTaskDelay(const TickType_t xTicksToDelay); //此后将要延迟多久
BaseType_t xTaskDelayUntil(TickType_t* const pxPreviousWakeTime, const TickType_t xTimeIncrement); //以pxPreviousWake Time为基础,在此基础上延迟多久
假如有一任务循环执行设置电平为高电平,并用HAL_Delay函数保持其高电平,延时时间不一(即高电平时间不一),之后设置为低电平并分别使用vTaskDelay和vTaskDelayUntil进行100ms延时。(使用vTaskDelayUntil需要传入一个时间为参考,可通过xTaskGetTickCount获得TickType_t类型的时间比变量,这里)
参考:利用STM32CubeMX和keil模拟器,3天入门FreeRTOS(2.2) —— 延时函数
while(1){
TickType_t pre_time = xTaskGetTickCount();
/*电平高电平*/
/*延时*/
/*电平低电平*/
vTaskDelayUntil(&pre_time, 100/portTICK_PERIOD_MS);
}
通过逻辑分析仪获取电平翻转信息,下图(vTaskDelay)可见,延时的100ms是在就是每个低电平持续的时间,说明vTaskDelay的延时是从调用开始到调用结束来计时:
下图(vTaskDelayUntil)的100ms则是以pre_time为始,以此为基础计算100ms,运行到vTaskDelayUntil再延时直至共计100ms(有点类似于周期为100ms)
参考文章:
利用STM32CubeMX和keil模拟器,3天入门FreeRTOS(2.2) —— 延时函数
热门推荐
电影《蛟龙行动》宣布撤档,此前博纳于冬曾表示“绝不撤档”
六道美味家常菜,成本不到100元,简单易学又实惠
古埃及艺术之钥:象形符号探索 Ⅰ
电脑连接以太网却无法上网怎么办?快速解决指南!
公众号流量主从起号到赚钱,全程操作指南新手必看
阳历转阴历生辰八字转换:从出生年月日到八字详解
团建需求收集指南:从目标设定到活动策划的全流程详解
揭秘:如何在信息爆炸的时代减少焦虑,找回内心的平静?
详解十灵日在日柱是什么意思及其影响
Windows 11更新驱动后黑屏怎么办?驱动升级后屏幕变黑怎么解决?
40句小众且惊艳的古诗词,那些落入凡尘的神仙诗句,惊艳了时光
Excel一月份工资怎么算
房子西北方风水代表什么,农村自建房西北角适合做什么
如何选择合适的机油黏度并满足车辆需求?这种选择怎样考虑不同的驾驶环境?
AnythingLLM 接入 Web Search
考公务员备考攻略:个人如何备战公务员考试的全面指南
那些作家笔下的“神仙比喻”,哪一句惊艳了你?
《非暴力沟通》:四个原则,让你学会爱的表达方式
礐石风景名胜区:汕头濠江的自然人文瑰宝
业主误丢“百万垃圾”,物管翻遍垃圾站为其找回
粑粑柑的功效与作用
如何理解影响黄金价格的重要经济因素?
木棉花“药食两用”价值研究
九段秘书工作法:高效能秘书的工作艺术
彼岸花的象征意义:生死轮回与爱情传说
本田雅阁和英诗派有什么区别?从外观、内饰、动力上进行比较!
如何按照劳动法合规裁员
简历中的期望薪资怎么定?
西游:孙悟空出生于哪一年?在什么朝代?
如何选择适合的服务器硬件配置?