crDELAY

[Co-Routine Specific]

croutine.h

void crDELAY( xCoRoutineHandle xHandle, portTickType xTicksToDelay )

crDELAY はマクロです。 上記のプロトタイプでのデータ型は参照のみのために示されます。

一定の時間コルーチンを遅延する。

crDELAY はコルーチン機能自身からのみ呼び出されることができる、コルーチン関数によってコールされた関数の中からではなく。 それはコルーチンがそれ自身のスタックを保守しないからです。

パラメータ: xHandle   遅延すべきコルーチンのハンドル。 これはコルーチン関数の xHandle パラメータです。
xTickToDelay   コルーチンが遅延すべきチック数。 これの実際の時間量は(FreeRTOSConfig.h にある) configTICK_RATE_HZ によって定義されます。 定数portTICK_RATE_MS はチックをミリ秒に変換するために使うことができます。

使用例:

 // Co-routine to be created.
 void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
 {
 // Variables in co-routines must be declared static if they must maintain value across a blocking call.
 // This may not be necessary for const variables.
 // We are to delay for 200ms.
 static const xTickType xDelayTime = 200 / portTICK_RATE_MS;

     // Must start every co-routine with a call to crSTART();
     crSTART( xHandle );

     for( ;; )
     {
        // Delay for 200ms.
        crDELAY( xHandle, xDelayTime );

        // Do something here.
     }

     // Must end every co-routine with a call to crEND();
     crEND();
 }