====== OSA : OS_Task_Create ====== **OS_Task_Create (priority, TaskName)**\\ === === {{osa:ref:attr_call_not_int.png|Нельзя вызывать из прерывания}} Инициализируем конкретную задачу. Этот сервис ищет в памяти свободный дескриптор задачи и записывает в него адрес создаваемой задачи, приоритет и флаги состояния. Изначально задача считается готовой к выполнению. Как только эта задача станет самой приоритетной из готовых, она получит управление. **При ипользовании CCS**: компилятор должен быть проинформирован о том, что функция //TaskName// будет вызвана планировщиком через указатель, поэтому в функции main нужно вызывать сервис [[osa:ref:allservices:OS_Task_Define|OS_Task_Define]]. **При использовании mikroC PRO**: все фунции-задачи должны быть описаны директивой #pragma fncall, напрмер:\\ \\ ###pragma fncall main MyTask##\\ ##void MyTask (void)##\\ ##{##\\ \ \ \ \ ... === Разрешен вызов: === Только не из прерывания === Параметры функции: === {| class = "fpl" |- |//''priority''// |Приоритет. Может быть от 0 (высший) до 7 (низший) |- |//''TaskName''// |Имя функции, которая будет использоваться как задача. |} === Возвращаемое значение: === {| class = "fpl" |- |//''FSR (FSR0)''// |Указывает на дескриптор задачи. Обычно в нем нет необходимости, но если будет нужно изменять приоритет этой задачи из другой, то можно пользоваться этим указателем. |} === Пример вызова: === void Task1 (void) { for (;;) OS_Yield(); } void Task2 (void) { for (;;) OS_Yield(); } void main (void) { OS_Init(); OS_Task_Create (1, Task1); // Создаем задачу Task1 с приоритетом 1 OS_Task_Create (5, Task2); // Создаем задачу Task1 с приоритетом 5 /*...*/ } === Old style name === **OS_CreateTask**\\ === См. также === * [[osa:ref:allservices:OS_Task_Create|OS_Task_Create]] * [[osa:ref:allservices:OS_Task_Replace|OS_Task_Replace]] * [[osa:ref:allservices:OS_Task_Delete|OS_Task_Delete]] * [[osa:ref:allservices:OS_Task_Define|OS_Task_Define]] * [[osa:ref:allservices:OS_Task_GetCur|OS_Task_GetCur]] * [[osa:ref:allservices:OS_Task_GetCreated|OS_Task_GetCreated]] * [[osa:ref:allservices:OS_Task_Pause|OS_Task_Pause]] * [[osa:ref:allservices:OS_Task_Continue|OS_Task_Continue]] * [[osa:ref:allservices:OS_Task_IsPaused|OS_Task_IsPaused]] * [[osa:ref:allservices:OS_Task_GetPriority|OS_Task_GetPriority]] * [[osa:ref:allservices:OS_Task_SetPriority|OS_Task_SetPriority]] ---- * [[osa:ref:services:alphabetical|Алфавитный указатель]] * [[osa:ref:services:brieflist|Все сервисы]] ~~UP~~