Перевод может содержать ошибки. Читайте первоисточник: FreeRTOS Demo Application Co-routines Examples
Назад: [Сопрограммы во FreeRTOS] | Вверх: [Сопрограммы во FreeRTOS] | Вперёд: [Сопрограммы во FreeRTOS] |
Два файла, включённые в поставку FreeRTOS, демонстрируют использование сопрограмм с очередями:
Это функционально эквивалентно стандартной демке flash.c, но с использованием сопрограмм вместо задач. В дополнение, и просто для демонстрации, вместо прямого переключения светодиода из сопрограммы (как в "быстром примере" ранее), номер светодиода, который нужно переключить, передаётся через очередь сопрограмме с более высоким приоритетом.
Демонстрирует передачу данных из прерывания в сопрограмму. Ловушка тиков ОС используется в качестве источника данных.
Демонстрационные приложения для PC и одно из старых для ARM Cortex-M3 уже предварительно настроены для использования этих примеров работы сопрограмм и могут использоваться в качестве справочных. Все остальные демонстрационные приложения сконфигурированы только для использования задач, но могут быть легко конвертированы для демонстрации сопрограмм. Для этого необходимо следовать инструкциям ниже. В них функциональность, реализованная в файле flash.c заменяется на реализованную в файле crflash.c:
/*----------------------------------------------------------------------------*/
void vApplicationIdleHook( void )
{
vCoRoutineSchedule( void );
}
Если main() уже содержит функцию-ловушку задачи простоя, тогда просто добавьте вызов vCoRoutineSchedule() в существующую функцию-ловушку.