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) —— 延时函数
热门推荐
如何查询公司的融资情况?这种查询方式在投资决策中有哪些应用?
硬皮病:症状、分类与治疗全解析
中国古城墙长度揭秘:各大城墙长度一览与比较
俄历史博物馆“珍宝·俄罗斯宫廷的辉煌”展开幕
派出所也参加车辆管理吗?揭秘基层警务的车辆管理职责
智能运维决策优化方案有哪些关键技术?
人血白蛋白适应症有哪些
经营企业需要注意成本费用哪些方面?
信用卡未激活会收取年费吗?全面解析信用卡年费政策
电热电器:使用时长、使用地点、使用方法及注意事项
电脑重新安装系统怎么安装?
轿车VS SUV:城市与高速的适配大比拼
胡佳:为什么说女性领导力更符合未来?
你的老家属于哪类村庄?(乡村全面振兴好光景④)
几种常见的石材分类
大理石玉石成分(花岗岩的主要成分是什么)
逍客加95号汽油会伤车吗?
国债逆回购优点介绍:为什么要买国债逆回购,国债逆回购有什么优点?
win11投屏连接后没反应?是设备问题还是设置错误?
辛鑫谈智能汽车发展:智能化与网联化结合,用户体验成关键
如何高效建立自己的知识库?这些方法你一定要知道!
三个角度剖析银行股分红情况,看完之后你会对如何选股有新的想法
两轮驱动和四轮驱动的差别有多大?
汽车驱动方式详解:五种主流驱动方式的特点与应用场景
普洱茶的焙火工艺及其对茶叶品质的影响
为什么说形而上学是一切知识的奠基,是哲学的基础呢?
房价下跌时的六大应对策略
和田玉鉴赏与保养全攻略:从选购到收藏的全过程指南
车辆年检超过多久算超期?如何避免车检过期带来的处罚
同样是左转弯,为什么他却要负全责?交警详解安全转弯技巧