// ***********************************************************
//	systick.h
//  Модуль создан на основе кода teplofizik, 2013
// ***********************************************************

#ifndef __SYSTICK_H
#define __SYSTICK_H

#define TIMER_HANDLERS    10  // Максимально количество обработчкиков

void SYSTICK_SetDelayFlag();

uint8_t Delay_ms(__IO uint32_t nTime);

void TimingDelay_Decrement(void);

typedef void (*TTimerHandler)();

// Запуск таймера с заданной частотой
void timer_Init(uint32_t Frequency);

// Добавить функцию в список вызова. Handler будет вызываться с заданной частотой
// Аргументы: 2
//  Frequency - частота вызова (при увеличении снижается точность)
//  Handler - функция которая будет вызваться
// Результат: нет
void timer_AddFunction(uint16_t Frequency, TTimerHandler Handler);

// Остановить таймер
void timer_Stop(TTimerHandler Handler);

// Включить таймер. Задача будет включена с места остановки
void timer_Resume(TTimerHandler Handler);

// Перезапустить таймер
void timer_Restart(TTimerHandler Handler);

// Перезапустить таймер. Задача будет выполненна сразу
void timer_RestartAtOnce(TTimerHandler Handler);

// Изменить частоту таймера
void timer_ChangeFrequency(TTimerHandler Handler, uint16_t Frequency);

// Главный цикл. в нем вызваются обработчики таймера
void timer_Main(void);

uint32_t clock_GetSYS(void);

#endif
