/*============================================================================== * Инициализация таймеров с использованием бибилотеки PLIB035 *------------------------------------------------------------------------------ * ЦНИИ СЭТ, Разваляев Алексей *============================================================================== * ЦНИИ СЭТ *============================================================================== */ #ifndef __TMR_H #define __TMR_H //-- Includes ------------------------------------------------------------------ #include "plib035.h" #include "retarget_conf.h" //-- Defines ------------------------------------------------------------------- // Дефайны для режима таймера Период в мкс, Частота, ПсевдоПрескалер, Период в тиках #define PERIOD_MKS(_per_) _per_, 0, 0, 0 #define FREQ_HZ(_freq_) 0, _freq_, 0, 0 #define LOAD(_load_, _presc_) 0, 0, _presc_, _load_ typedef struct { float ClkFreq; /*!< Частота тактирования таймера в МГц */ uint32_t PeriodUs; /*!< Период таймера в мкс */ uint32_t FreqHz; /*!< Частота таймера в Гц */ uint32_t Prescaler; /*!< Псевдопрескалер частоты */ uint32_t Load; /*!< Период таймера в тиках */ FunctionalState IT; /*!< Разрешение работы прерывания */ FunctionalState ADCSOC; /*!< Разрешение генерации сигналов запуска АЦП */ FunctionalState DMAReq; /*!< Разрешение генерации запросов к DMA */ TMR_ExtInput_TypeDef ExtInput; /*!< Настройка внешнего тактирования таймера */ void (*Callback)(void); /* Коллбек который вызовется по прерыванию таймера */ }TMR_ExtInit_TypeDef; typedef struct { TMR_TypeDef *Instance; TMR_ExtInit_TypeDef *Config; }TMR_HandleTypeDef; extern TMR_HandleTypeDef htmr0; extern TMR_HandleTypeDef htmr1; extern TMR_HandleTypeDef htmr2; extern TMR_HandleTypeDef htmr3; //-- Exported functions prototypes --------------------------------------------- void tmr_init_first(void); OperationStatus tmr_init(TMR_HandleTypeDef *htmr, TMR_ExtInit_TypeDef *NewConfig); OperationStatus tmr_set_callback(TMR_HandleTypeDef* htmr, int cb_type, void (*Callback)(void)); OperationStatus tmr_start(TMR_HandleTypeDef *htmr); OperationStatus tmr_stop(TMR_HandleTypeDef *htmr); OperationStatus tmr_delay(TMR_HandleTypeDef *htmr, uint32_t delay); OperationStatus tmr_delay_start(TMR_HandleTypeDef *htmr, uint32_t *var); int tmr_delay_done(TMR_HandleTypeDef *htmr, uint32_t delay, uint32_t *var); void tmr_handler(TMR_HandleTypeDef* htmr); void TMR_Init(TMR_TypeDef* TMRx, TMR_ExtInit_TypeDef* InitStruct); #endif /*__TMR_H*/