Atmel Software Framework

 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
crDELAY

croutine.

h

 crDELAY( xCoRoutineHandle xHandle, portTickType xTicksToDelay );

Delay a co-routine for a fixed period of time.

crDELAY can only be called from the co-routine function itself - not from within a function called by the co-routine function. This is because co-routines do not maintain their own stack.

Parameters
xHandleThe handle of the co-routine to delay. This is the xHandle parameter of the co-routine function.
xTickToDelayThe number of ticks that the co-routine should delay for. The actual amount of time this equates to is defined by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant portTICK_RATE_MS can be used to convert ticks to milliseconds.

Example usage:

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();
 }