64 lines
3.1 KiB
C
64 lines
3.1 KiB
C
/*==============================================================================
|
||
* Инициализация таймеров с использованием бибилотеки PLIB035
|
||
*------------------------------------------------------------------------------
|
||
* ЦНИИ СЭТ, Разваляев Алексей <wot890089@mail.ru>
|
||
*==============================================================================
|
||
* ЦНИИ СЭТ
|
||
*==============================================================================
|
||
*/
|
||
#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*/
|