函數(shù)名 :vTaskDelay 頭文件 :task. h 函數(shù)功能:任務(wù)相對(duì)延時(shí) 函數(shù)聲明:
void vTaskDelay( portTickType xTicksToDelay );
INCLUDE_vTaskDelay 必須定義為 1以使能此函數(shù)。見configuration 章節(jié)獲得更多信息。 延遲一個(gè)任務(wù)給定數(shù)量的時(shí)間封(心跳間隔時(shí)間)。實(shí)際任務(wù)阻塞的時(shí)間長(zhǎng)度在于時(shí)間封頻率。常量portTICK_RATE_MS 可以用來(lái)計(jì)算時(shí)間封的實(shí)際時(shí)間間隔。 vTaskDelay指定了任務(wù)從調(diào)用 vTaskDelay 起算,解除阻塞的 相對(duì)時(shí)間。舉例,指定阻塞時(shí)間為100 個(gè)時(shí)間封,會(huì)導(dǎo)致任務(wù)在調(diào)用vTaskDelay后阻塞100 個(gè)時(shí)間封。 vTaskDelay并不提供一個(gè)好方法控制周期任務(wù)的頻率,其它任務(wù)和中斷的活動(dòng),會(huì)影響vTaskDelay的調(diào)用頻率。見 vTaskDelayUntil() ,這是另外一種API函數(shù),設(shè)計(jì)來(lái)便利固定頻率的執(zhí)行。它靠指定絕對(duì)時(shí)間(而非相對(duì)時(shí)間)來(lái)實(shí)現(xiàn)功能,而此時(shí)調(diào)用的任務(wù)進(jìn)入阻塞。 具體參數(shù) xTicksToDelay :時(shí)間封的數(shù)量。 范例
void vTaskFunction( void * pvParameters )
{
/* Block for 500ms. */
const portTickType xDelay = 500 / portTICK_RATE_MS;
for( ;; )
{
/*
Simply toggle the LED every 500ms, blocking between each toggle. */
vToggleLED();
vTaskDelay( xDelay );
}
}
更多建議: