#ifndef TIMER_CFG_H_
#include "base/define.h"
#include "stm32f10x_tim.h"
typedef  void (*Timerupdatefunc)(void );
typedef  void (*TimerTriger)(uint8_t );
//停止超时定时器计数
void RunTimeoutStop(void);
/*
@brief 发送时钟校准波形
@param pre_us 发送的周期
@param count 发送周期的个数
*/
void FireBus_ClkAmend(uint16_t pre_us,uint16_t trigger_us,uint16_t count,void *p_fun);

/*
@brief 超时定时器,单位0.1ms
@param ms 最大可设置6553。
@param  pfunc 超时回调函数，注意回调函数中不能做长延时任务
*/
void RunTimeOut_Timer(uint16_t ms,Timerupdatefunc pfunc );
//获取超时定时器计数值
uint16_t GetRunTimeOutCount(void);
/*
延时定时器初始化，单次向上计数
*/
void DelayTimer_Init(void);
/*
延时定时器初始化，单次向上计数
*/
void TimerCount_Init(void);

/* 
@breif 等待定时器计数值大于设定值
@param 等待定时器的结束值，单位0.1ms
*/
void WaitDelayEnd(uint16_t wait_time);

/*
@brief 重启延时定时器
*/
void StartDelayTime(void);

#define GET_COUNTTIM_VAL()   (TIM2->CNT)

/*
@brief 获取当前定时器计数值，单位1us。并重启计数
@rtv   返回上次的计数值
*/
uint16_t Get1usCount(void);
/*
@brief 获取当前定时器计数值，单位10us。并重启计数
@rtv   返回上次的计数值
*/
uint16_t Get10usCount(void);
/*
@brief 获取当前定时器计数值，单位0.1ms。并重启计数
@rtv   返回上次的计数值
*/
uint16_t Get100usCount(void);
/*
@brief 直接获取定时器的值
*/
uint16_t GetCountTimerCnt(void);
/*
使用轮询的方式检测校准结束
*/
void FireBus_ClkAmendCycle(void);

// 复位并关闭定时器
void TimerCount_Off(void);


#endif
