本篇主要介绍FreeRtos的绝对延时函数vTaskDelayUntil
一、vTaskDelayUntil函数的用法
参数分析:[param 1] pxPreviousWakeTime:代表上一次唤醒的时间
[param 2]xTimeIncrement:要delay的时钟节拍数
用法:
static TickType_t increment = pdMS_TO_TICKS( 50 );
wakeTime = xTaskGetTickCount(); //获取当前的系统节拍值
for( ;; )
{
fun1();
fun2();
fun3();
xxxx
//调用函数vTaskDelayUntil 进行延时
vTaskDelayUntil( &wakeTime, increment);//wakeTime这个变量会在函数内部自动更新
}
二、vTaskDelayUntil绝对延时绝对在哪里了
如上图,绝对延时的绝对的意思就是1+2(函数主体+delay)的时间是个固定值 ,即回屏蔽掉函数主体运行时间的干扰
三、代码分析
prvAddCurrentTaskToDelayedList 和 xTaskResumeAll在上一篇中FreeRtos时间管理(一)已经分析过了,本篇不再分析
几个变量之间的关系