~~NOTOC~~
===== tn_start_system() =====
Функция предназначена для запуска системы. В функции создаются две системные задачи - задача таймера (timer) и задача простоя (idle), затем производится переключение контекста на задачу таймера. Возврат из функции не производится.
**Вызов:**
void tn_start_system (TN_UWORD *timer_task_stack,
TN_UWORD timer_task_stack_size,
TN_UWORD *idle_task_stack,
TN_UWORD idle_task_stack_size,
void (*app_in_cb)(void),
void (*cpu_int_en)(void),
void (*idle_user_cb)(void)
);
**Разрешен вызов:** \\
Один раз в функции ''main()''
**Параметры функции:**
; ''timer_task_stack'' : указатель на стек задачи системного таймера
; ''timer_task_stack_size'' : размер стека задачи системного таймера
; ''idle_task_stack'' : указатель на стек системной задачи простоя
; ''idle_task_stack_size'' : размер стека системной задачи простоя
; ''app_in_cb'' : указатель на функцию инициализации приложения. Функция вызывается один раз при старте системы
; ''cpu_int_en'' : указатель на функцию конфигурации и разрешения прерываний. Функция вызывается один раз при старте системы после вызова функции ''app_in_cb''
; ''idle_user_cb'' : указатель на функцию, которая периодически вызывается из системной задачи простоя
\\
**Возвращаемые значения:**
нет
**Пример вызова:**
#define TMR_TASK_STACK_SIZE 128
#define IDL_TASK_STACK_SIZE 64
TN_UWORD stk_tmr_task[TMR_TASK_STACK_SIZE];
TN_UWORD stk_idl_task[IDL_TASK_STACK_SIZE];
void Appl_Init (void)
{
/* инициализация приложения */
/* инициализация системного таймера */
/* создание пользовательских задач */
}
void Int_Init (void)
{
/* разрешение прерывания от системного таймера */
/* разрешение других прерываний */
}
void IDLE_func (void)
{
/* */
}
int main (void)
{
tn_start_system (stk_tmr_task,
TMR_TASK_STACK_SIZE,
stk_idl_task,
IDL_TASK_STACK_SIZE,
Appl_Init,
Int_Init,
IDLE_func
);
return (0);
}
\\
----
[[tnkernel:ref:sys:intro#Системные сервисы|К списку сервисов]]