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) —— 延时函数
热门推荐
公司对挂靠项目如何管理
代驾服务的基本条件与要求,确保安全出行的重要性与未来发展趋势
腕管综合征的症状挂什么科室检查
2月LPR报价揭晓:1年、5年期利率稳如泰山,楼市回暖影响几何?
西班牙足球的传奇:拉科鲁尼亚的辉煌与落寞
二战战败后,德国、日本和意大利三个轴心国国家元首,结局如何
如何在微信中更改头像,展示真实自我的简单步骤与意义解析
早晚血压测量:准确性与技巧
深圳御景台133㎡四房两卫现代简约装修实景
签了劳动合同缴纳社保:法律实务中的要点解析与风险防范
女性45岁绝经和54岁绝经,谁的衰老速度更快?
房产证加配偶名字办理流程及收费标准详解
避坑指南!看上去差不多的改色膜为什么价格差那么多?
什么是供应商管理(SRM)系统 如何在企业中实施 SRM系统
WLAN已关闭且无法打开?这份故障排查指南请收好
耳鸣是怎麼回事?
再三提醒:痣长在6个位置,大人小孩都要注意,可能有癌变的风险
金榜公园:厦门自然与文化融合的必游景点
提示工程中的10个设计模式
无惨与艾伦谁更接近恶的本质-囧次元官网对峙《鬼灭vs巨人》反派哲学
老年人视力模糊是老花还是白内障?武汉普瑞眼科程旭康科普要记好
关于巴塞罗那对阵马德里竞技,你所需要知道的一切
“单休”和“大小周”:周六工资需要“补差”吗?
汽车销售淡季在几月份,买车更便宜?
一体盆浴室柜:美观与实用兼得的家装新宠
关于外星智慧的最新公式表明,我们在银河系中真的是孤独的
如何使用EZ Flash更新BIOS
你的充电宝安全吗?这些消防安全知识要牢记
武汉出镜率最高的十个地标建筑:黄鹤楼长江大桥江汉关楚天台上榜
肠胃不好,长期吃奥美拉唑,这3个副作用你需要了解,更要注意