You are here

Реализация сопрограммы

Перевод может содержать ошибки. Читайте первоисточник: Implementing a Co-Routine

Назад: [Сопрограммы во FreeRTOS] Вверх: [Сопрограммы во FreeRTOS] Вперёд: [Сопрограммы во FreeRTOS]

 

Сопрограмма должна иметь следующую структуру:

/*----------------------------------------------------------------------------*/
void vACoRoutineFunction( CoRoutineHandle_t xHandle, UBaseType_t uxIndex )
{
    crSTART( xHandle );

    for( ;; )
    {
        -- Код сопрограммы приложения располагается здесь. --
    }

    crEND();
}

Тип crCOROUTINE_CODE определяется как функция, которая возвращает void и в качестве параметров получает CoRoutineHandle и индекс. Все функции, которые реализуют сопрограмму, должны иметь этот тип.

Сопрограммы создаются вызовом функции xCoRoutineCreate().

Обратите внимание:

  • Все функции сопрограмм должны начинаться с вызова crSTART().
  • Все функции сопрограмм должны заканчиваться вызовом crEND().
  • Функции сопрограмм никогда не должны завершаться, поэтому как правило реализуются в виде бесконечного цикла.
  • Много сопрогамм могут создаваться из одной функции сопрограммы. Параметр uxIndex предоставляется как средство различения между такими сопрограммами.

 

Hobby's category: