/**************************************************************************//**
  * \file     Sys_Tick.h
  * \brief    System tick timer header file
  * \details
  * \author   Zhang Xuan
  * \version  V1.0.0
  * \date     19-Jul-2018
  * \par      History:
  *           V1.0.0 Initial release
  * \par      Copyright:
  *           (c) Heilongjiang TYW Electronics co., LTD
******************************************************************************/

#ifndef _SYS_TICK_H_
#define _SYS_TICK_H_

/* Includes ------------------------------------------------------------------*/

/* C binding of definitions if building with C++ compiler */
#ifdef __cplusplus
extern  {
#endif

/* Exported types ------------------------------------------------------------*/
typedef enum
{
    SYS_TICK_50us_CB = 0U,
    SYS_TICK_1ms_CB,
    SYS_TICK_100ms_CB,
}Sys_Tick_Call_Back_Type_en_t;

/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
//#define   SYS_TICK_INT_INTERVAL             (50UL)    /* 50us */
#define   SYS_TICK_INT_INTERVAL             (1000UL)    /* 1000us */

#define   SYS_TICK_CALL_BACK_TYPE_NUM       (3U)

/* 50us rolling counter */
extern volatile uint16_t g_u16SysRollingCounter50us;
#define   SYS_ROLLING_COUNTER_50us          g_u16SysRollingCounter50us

/* 1ms rolling counter */
extern volatile uint16_t g_u16SysRollingCounter1ms;
#define   SYS_ROLLING_COUNTER_1ms           g_u16SysRollingCounter1ms

/* Interrupt service routine adaptor */
#define   R_AWOT_TintIsr(i)                 SysTick_Handler()

/* Exported functions ------------------------------------------------------- */

extern void Sys_Tick_Timer_Start(void);
extern void Sys_Tick_Timer_Stop(void);
extern void Sys_Tick_Timer_Call_Back_Reg(Sys_Tick_Call_Back_Type_en_t enType, void (*pfnIsr)(void));
extern void SysTick_Handler(void);

#ifdef __cplusplus
}
#endif

#endif /* _GPIO_H_ */


