Freertos中两个delay函数

news/2025/3/15 11:14:30/

vTaskDelay:至少等待指定个数的 Tick Interrupt 才能变为就绪状态
vTaskDelayUntil:等待到指定的绝对时刻,才能变为就绪态。

main代码:

int main( void )
{prvSetupHardware();/* Task1的优先级更高, Task1先执行 */xTaskCreate( vTask1, "Task 1", 1000, NULL, 2, NULL );xTaskCreate( vTask2, "Task 2", 1000, NULL, 1, NULL );vTaskStartScheduler();return 0;
}

task1代码:

void vTask1( void *pvParameters )
{const TickType_t xDelay50ms = pdMS_TO_TICKS( 50UL );TickType_t xLastWakeTime;int i;/* 获得当前的Tick Count */xLastWakeTime = xTaskGetTickCount();for( ;; ){flag = 1;for (i = 0; i <5; i++)printf( "Task 1 is running\r\n" );#if 1		vTaskDelay(xDelay50ms);
#else		vTaskDelayUntil(&xLastWakeTime, xDelay50ms);
#endif		}
}

task2代码:

void vTask2( void *pvParameters )
{for( ;; ){flag = 0;printf( "Task 2 is running\r\n" );}
}

这套代码主要就是验证两个演示函数,if 1/if 0 两种情况,分别调用了不同的延时函数。

task1:
高优先级,flag=1 两种延时50ms

task2:
低优先级,flag=0

用逻辑分析仪测出结果;
在这里插入图片描述
在这里插入图片描述

总结:

vTaskDelay:指定的是阻塞的时间
vTaskDelayUntil:指定的是任务执行的间隔、周期
跟韦东山老师学习的。


http://www.ppmy.cn/news/810119.html

相关文章

linux中的sleep函数和delay函数

对于做过单片机程序的朋友来说&#xff0c;delay是很常见的函数&#xff0c;通常就是while或者for循环&#xff0c;进行空指令的执行&#xff0c;由于单片机的晶振固定&#xff0c;一个机器周期的时间是固定的&#xff0c;执行多少个空指令&#xff0c; 就可以完成多少个机器周…

【51单片机C语言】2-1模块化Delay函数

1.新建一个Delay.c文件和Delay.h文件 2.Delay.c中&#xff0c;Delay函数代码如下&#xff1a;&#xff08;11.0592MHz&#xff0c;可以由stc软件自带的计算器计算出来&#xff09; //Delay函数模块化 void Delay(unsigned int xms) //Delay Function 11.0592MHz {unsigned c…

STM32delay函数应用与说明

STM32delay函数应用应用与说明 Cortex M4内核编程手册有关时钟系统的内容定时函数的实现delay_init 函数delay_us 函数 对与32中的delay函数有很多中形式可以使用&#xff0c;这里提供一些自己使用遇到过的函数类型。 Cortex M4内核编程手册有关时钟系统的内容 p230 SysTick t…

android wait函数使用,Android Sleep/Wait/Delay函数

首先,我是一个初学Android的世界,所以请道歉,如果这是愚蠢的问题.. 我正在尝试做以下事情: 启用移动数据 等待10秒 一个。检查Mobile是否有IP地址(数据连接成功) 湾如果未连接,则禁用数据 C。转到第1步 这些步骤1到3在For循环中执行用户给定的重试次数。 现在我的问题是:…

delay函数

在VC中使用带上头文件#include <windows.h>注意:在VC中Sleep中的第一个英文字符为大写的"S"在标准C中是sleep, 不要大写.. 下面使用大写的来说明,, 具体用什么看你用什么编译器. 简单的说VC用Sleep, 别的一律使用sleep.Sleep函数的一般形式:Sleep(unisgned lon…

c语言delay函数的作用,delay函数 delay() c语言延迟函数

51单片机C语言中delay函数是怎么定义和使用的?很多时候我们看别人的故事哀其不幸恨其不争等到发现在自己身上好像突然就明白了别人的道理。 void Delay (unsigned int a){ unsigned int i; while( a 。= 0){ for(定义一个延时xms毫秒的延时函数 void delay(unsigned int xms) …

c语言delay函数的作用,delay用法(delay函数使用)

是delay to do 还是delay doing 还是delay do?还是什么啊~~ 问下 delayvt.延期, 延缓; 推迟We decided to delay our holiday until next month.我们决定将休假延至下个月。所以应该是delay doing 函数名: delay 功 能: 将程序的执行暂停一段时间(毫秒) 用 法: void dela…

python中delay__python delay函数

Python 中的sleep函数 本人是Python菜鸟一枚,今天用python时,发现如果按照下图所示来写程序在我的Python环境(Win7+Python2.7.9)下测试没问题,是等待5秒后再输出 m。 你的问题可能是被标准输出流的缓冲区缓冲了,给 stdout 加一个 flush 就可以了: from time import sleepf…