系统提供了两个任务延时函数:相对延时函数vTaskDelay()和绝对延时函数vTaskDelayUntil()
相对延时是指:vTaskDelay()开始执行到退出执行的时间固定
/* 相对延时函数 */
void vTaskDelay(const TickType_t xTicksToDelay)
{
BaseType_t xAlreadyYielded = pdFALSE;
/* 延时时间大于0 */
if(xTicksToDelay > (TickType_t)0U)
{
configASSERT(uxSchedulerSuspended == 0);
/* 调度器挂起 */
vTaskSuspendAll();
{
traceTASK_DELAY();
/* 将任务添加到延时列表 */
prvAddCurrentTaskToDelayedList(xTicksToDelay, pdFALSE);
}
/* 解除调度器挂起,解除的时候可能请求调度 */
xAlreadyYielded = xTaskResumeAll();
}
else
{
mtCOVERAGE_TEST_MARKER();
}
/* 解除调度器挂起的时候没有请求调度 */
if(xAlreadyYielded ==