Quality RTOS & Embedded Software

 Real time embedded FreeRTOS RSS feed 
Quick Start Supported MCUs PDF Books Trace Tools Ecosystem TCP & FAT Training




Co-routines
[More about co-routines...]

Implementing a Co-Routine

A co-routine should have the following structure:
    void vACoRoutineFunction( CoRoutineHandle_t xHandle,
                              UBaseType_t uxIndex )
    {
        crSTART( xHandle );

        for( ;; )
        {
            -- Co-routine application code here. --
        }

        crEND();
    }
 
The type crCOROUTINE_CODE is defined as a function that returns void and takes an CoRoutineHandle_t and an index as its parameters. All functions that implement a co-routine should be of this type (demonstrated above).

Co-routines are created by calling xCoRoutineCreate().

Points to note:

  • All co-routine functions must start with a call to crSTART().
  • All co-routine functions must end with a call to crEND().
  • Co-routine functions should never return so are typically implemented as a continuous loop.
  • Many co-routines can be created from a single co-routine function. The uxIndex parameter is provided as a means of distinguishing between such co-routines.






[ Back to the top ]    [ About FreeRTOS ]    [ Sitemap ]    [ ]




Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS kernel V10 is available for immediate download. Now MIT licensed.


FreeRTOS Partners

ARM Connected RTOS partner for all ARM microcontroller cores

IAR Partner

Microchip Premier RTOS Partner

RTOS partner of NXP for all NXP ARM microcontrollers

STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0

Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers

OpenRTOS and SafeRTOS