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) —— 延时函数
热门推荐
褪黑素补剂:睡眠救星还是智商税?
褪黑素的秘密:守护肠道健康
爱情中的争吵与矛盾:如何化解与重建和谐?
AI辅助解读:核磁共振报告单深度解析与要点指南
吃降压药的10个细节,您知道几个?血压下不来教您3招
昌江乌烈镇学校校长金艳:用心打造“有温度的教育”
跑步机爬坡运动:轻松燃脂的运动新选择
40岁男子,每天坚持吃“六味地黄丸”,结果怎么样了?
降脂药随餐吃还是睡前吃,吃不对等于白吃!一次说清楚,建议收藏
仫佬族灰拔豆腐:草木灰里的美味传承
春食记:一盘“翡翠豆腐”里的江南故事
灰拔豆腐:舌尖上的非遗美味
宝宝流口水怎么办?这份护理指南请收好
情绪波动竟让你流口水?揭秘口腔健康的奥秘
流口水竟是帕金森症预警?这些症状要警惕
九味地黄丸和六味地黄丸区别
影像学在脊柱疾病中的作用
身体这4个部位发出异常声音,可能是疾病预警!
浦东新区公办和民办小学摇号详解
快走降压:高血压患者的运动良方
高血压来袭,教你正确测血压
运动降压:专家推荐的高血压运动指南
妙佑医疗国际&周田明教授教你管理高血压
痛风治疗药物及预防措施全解析
龟鹿二仙胶这样吃最有效!功效、吃法、适合人群懒人包
加拿大小礼品有哪些
汪苏泷《浪漫疯子》:一首引发爱情观热议的音乐作品
河南十大名山,全是5A级风景名胜。也是河南最著名的旅游景点!
汪苏泷恋情再爆热搜:圈外女友身份揭秘
汪苏泷恋情风波:粉丝炸锅,社交媒体掀起"寻爱"热潮