99
КОМПОНЕНТЫ И ТЕХНОЛОГИИ •
№ 9 '2011
www.kite.ru
компоненты
микроконтроллеры
К функциям, реализующим сопрограммы,
предъявляются следующие требования:
1. Функция должна начинаться с вызова API-
функции
crSTART().
2. Функция должна завершаться вызовом
API-функции
crEND().
3. Как и в случае с задачей, функция никогда
не должна заканчивать свое выполнение,
весь полезный код сопрограммы должен
быть заключен внутри бесконечного цикла.
4. Сопрограммы выполняются в режиме ко-
оперативной многозадачности. Поэтому
если в программе используется несколько
сопрограмм, то для того, чтобы процессор-
ное время получали все сопрограммы в про-
грамме, бесконечный цикл должен содержать
вызовы блокирующих API-функций.
Создание сопрограммы
Для создания сопрограммы следует до за-
пуска планировщика вызвать API-функ-
цию
xCoRoutineCreate(), прототип которой
приведен ниже:
portBASE_TYPE xCoRoutineCreate(
crCOROUTINE_CODE pxCoRoutineCode,
unsigned portBASE_TYPE uxPriority,
unsigned portBASE_TYPE uxIndex
);
Аргументы и возвращаемое значение:
1.
pxCoRoutineCode — указатель на функ-
цию, реализующую сопрограмму (факти-
чески — идентификатор функции в про-
грамме).
2.
uxPriority — приоритет создаваемой со-
программы. Если задано значение боль-
ше, чем (
conf igMAX_CO_ROUTINE_
PRIORITIES — 1), то сопрограмма
получит приоритет? равный (
configMAX_
CO_ROUTINE_PRIORITIES — 1).
3.
uxIndex —
целочисленный параметр,
который передается сопрограмме при ее
создании. Позволяет создавать несколько
экземпляров одной сопрограммы.
4. Возвращаемое значение. Равно
pdPASS,
если сопрограмма успешно создана и до-
бавлена к
списку готовых к выполне-
нию, в противном случае — код ошибки,
определенный в файле
ProjDefs.h (обычно
Достарыңызбен бөлісу: