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) —— 延时函数
热门推荐
十种皮蛋家常菜,传统食材的创意食谱
父亲节特辑:20本精选绘本展现父爱的温暖与力量
默默守护:父爱是生命中最厚重的情感
世界经典乐曲故乡获新荣誉:千年瑶寨两项文化传统获版权登记
工商银行借记卡注销攻略,你get了吗?
梧州:“小香港”的前世今生
耳穴埋豆+药膳,告别失眠烦恼
徐州心理专家详解:失眠的专业治疗方法
提升情商,让恋爱更甜蜜
魏延之死:从战功赫赫到被诛三族,揭秘蜀汉名将与诸葛亮的恩怨
1000元装机攻略:两套办公娱乐配置方案推荐
肾结石来袭,教你快速缓解右侧腰疼
剧烈运动后腰疼怎么办?这份实用指南请收好!
手相学:千年玄学的科学解读
东北雪里蕻炖豆腐:冬日里的暖心美味
东北往事知多少,大帅府里走一圈!感受中国近代史波澜壮阔!
黄昏时刻:自然之美与人文之思的完美融合
华清宫探秘《长恨歌》背后的爱情传奇
清明节扫墓祭祖:千年传承的孝道文化
每天一把桂圆红枣,气血双补、安神助眠效果好
从肉夹馍到灌汤包:陕西十大特色小吃详解
两种方法教你在家做地道老北京羊蝎子火锅
黑豆豉纳豆富含纳豆激酶,科学证实助力心血管健康
自制豆豉:8步制作传统发酵美食,多种创意吃法
清明新风尚:网络祭祀与生态葬法
手机距离传感器故障?这些解决方法让你告别通话"尴尬"
世界最著名的四大古都,哪一个历史最悠久?西安竟然屈居第三
冬季自驾进京,北京交警APP教你搞定进京通行证
清华团队揭秘:Feimin如何调控运动产热?
上海人口重返增长:政策红利与经济活力双轮驱动