现在的位置: 首页 > 综合 > 正文

vTaskDelay

2013年10月21日 ⁄ 综合 ⁄ 共 814字 ⁄ 字号 评论关闭
void vTaskDelay( portTickType xTicksToDelay );

INCLUDE_vTaskDelay必须设置为1,这个函数才为可用。

延时任务为已知时间片。时间片是任务切换的频率

 

任务被锁住剩余的实际时间由时间片率决定。

portTICK_RATE_MS常量用来用来从时间片速率(一片周期代表着分辨率)来计算实际时间。

参数:

xTicksToDelay

时间数量,调用任务应该锁住的时间片周期

使用例子:

 
 void vTaskFunction( void * pvParameters )
 {
 /* 想挂起500ms.先计算出需要的tick数×1个tick所需的时间就=500ms */
 const portTickType xDelay = 500 / portTICK_RATE_MS;

     for( ;; )
     {
         /* 简单的每 500ms触发LED, .在每两次触发间挂起*/
         vToggleLED();
         vTaskDelay( xDelay );
     }
}
//======================================================================
configTICK_RATE_HZ

The frequency of the RTOS tick interrupt.

RTOS时间片中断的频率。

时间片中断用来测量时间。因此更高时间片频率意味着时间测量可以有更高分辨率,同时意味着内核占用更多的CPU(效率很低)。演示程序都使用了1000Hz的时间片频率。这是为了测试内核,通常需要更高的频率。

多个任务共有同一优先级。通过切换任务,在每一个RTOS时间片内,内核将在同一优先级的任务间分配处理器时间。高时间片频率意味着将减少给予每个任务的时间份额。

这也是任务轮询时分配各个任务的时间长度,任务切换的频率。

//=======================================

vTaskDelay(1)是挂起一个tick的时间长度

抱歉!评论已关闭.