Функция предназначена для запуска системы. В функции создаются две системные задачи - задача таймера (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); }