xCoRoutineCreate

[Co-Routine Specific]

croutine.h

portBASE_TYPE xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, unsigned portBASE_TYPE uxPriority, unsigned portBASE_TYPE uxIndex );

新しいコルーチンを作成して、そしてそのコルーチンを実行可能状態リストに加える。

パラメータ:
pxCoRoutineCode   コルーチン関数へのポインタ。 コルーチン関数は特別なシンタックスを必要とします − もっと多くの情報を得るために Web ドキュメンテーションのコルーチンのセクションを参照してください。

uxPriority   コルーチンが実行に際しての他のコルーチンに対しての優先権・・・

uxIndex   同一関数を実行する異なったコルーチンを区別するために使われる。 それ以上のインフォメーションのために以下の例と Web ドキュメンテーションのコルーチンのセクションを参照してください。

リターン:もしコルーチン作成が成功し、そして実行可能リストに加えられたなら、 pdPASS が戻る、さもなければ ProjDefs.h に定義された誤リコードが返される。

使用例:

 // Co-routine to be created.
 void vFlashCoRoutine( 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.
 static const char cLedToFlash[ 2 ] = { 5, 6 };
 static const portTickType uxFlashRates[ 2 ] = { 200, 400 };

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

     for( ;; )
     {
         // This co-routine just delays for a fixed period, then toggles
         // an LED.  Two co-routines are created using this function, so
         // the uxIndex parameter is used to tell the co-routine which
         // LED to flash and how long to delay.  This assumes xQueue has
         // already been created.
         vParTestToggleLED( cLedToFlash[ uxIndex ] );
         crDELAY( xHandle, uxFlashRates[ uxIndex ] );
     }

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

 // Function that creates two co-routines.
 void vOtherFunction( void )
 {
 unsigned char ucParameterToPass;
 xTaskHandle xHandle;
		
     // Create two co-routines at priority 0.  The first is given index 0
     // so (from the code above) toggles LED 5 every 200 ticks.  The second
     // is given index 1 so toggles LED 6 every 400 ticks.
     for( uxIndex = 0; uxIndex < 2; uxIndex++ )
     {
         xCoRoutineCreate( vFlashCoRoutine, 0, uxIndex );
     }  
 }

xCoRoutineHandle

コルーチンを参照出来るタイプ。 コルーチンハンドルはそれぞれのコルーチン関数の中に自動的にパスします。