====== 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~~