Компоненты и технологии • №2 '2011 компоненты



Pdf көрінісі
бет97/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   93   94   95   96   97   98   99   100   ...   129
Kurniz

vCoRoutineSchedule() управление получает 
сопрограмма с наивысшим приоритетом.
Приоритет сопрограммы задается це-
лым числом, которое может прини-
мать значения от 0 до (conf igMAX_CO_
ROUTINE_PRIORITIES — 1). Большее 
значение соответствует более высокому 
приоритету. Макроопределение configMAX_
CO_ROUTINE_PRIORITIES задает общее 
число приоритетов сопрограмм в програм-
ме и определено в конфигурационном фай-
ле FreeRTOSConf ig.h. Изменяя значение 
conf igMAX_CO_ROUTINE_PRIORITIES
можно определить любое число возможных 
приоритетов сопрограмм, однако следует 
стремиться уменьшить число приоритетов 
до минимально достаточного для экономии 
оперативной памяти, потребляемой ядром.
реализация
сопрограммы
Как и задача, сопрограмма реализуется 
в виде функции языка Си. Указатель на эту 
функцию следует передавать в качестве аргу-
мента API-функции создания сопрограммы, 
о которой будет сказано ниже. Пример функ-
ции, реализующей сопрограмму:
void vACoRoutineFunction(xCoRoutineHandle xHandle, unsigned 
portBASE_TYPE uxIndex)
{
crSTART( xHandle );
for(;; )
{
// Код, реализующий функциональность сопрограммы
размещается здесь.
}
crEND();
}
Аргументы функции, реализующей сопро-
грамму:
1. xHandle — дескриптор сопрограммы. 
Автоматически передается в функцию, ре-
ализующую сопрограмму, и в дальнейшем 
используется при вызове API-функций для 
работы с сопрограммами.
2. uxIndex — произвольный целочисленный 
параметр, который передается в сопро-
грамму при ее создании.
Указатель на функцию, реализующую со-
программу, определен в виде макроопределе-
ния crCOROUTINE_CODE.


Достарыңызбен бөлісу:
1   ...   93   94   95   96   97   98   99   100   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет