~~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#Системные сервисы|К списку сервисов]]