/**
  ******************************************************************************
  * @file    tc_hal.h
  * @author  Product application department
  * @version V1.0
  * @date    2020.03.20
  * @brief   Header file of TC HAL module.
  * 
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/

#ifndef __TC_HAL_H
#define __TC_HAL_H

#ifdef __cplusplus
extern "C"
{
#endif

/* Includes ------------------------------------------------------------------*/
#include "tc_drv.h"
#include "hal_def.h"


/**@defgroup HAL HAL driver
  *
  *@{
  */

/** @defgroup HAL_TC TC
  *
  *@{
  */

/*** 宏定义 *******************************************************************/
/** @defgroup TC_Exported_Macros Exported Macros
  *
  * @{
  */

 /**
  * @}
  */

/*** 结构体、枚举变量定义 *****************************************************/
/** @defgroup TC_Exported_Types Exported Types
  *
  * @{
  */

/**
  *@brief TC_InitTypeDef句柄结构体定义.
  *
  */
typedef void (*tc_callback_t)(void*);

/**
* @brief TC 初始化结构体定义
*
*/
typedef struct
{
  TC_TypeDef *instance;
  FunctionalStateTypeDef wait_mode; /**< 等待模式位*/
  FunctionalStateTypeDef doze_mode; /**< 休眠模式位*/
  FunctionalStateTypeDef stop_mode; /**< 停止模式位 */
  FunctionalStateTypeDef debug_mode; /**< 停止模式位 */

  FunctionalStateTypeDef reset_enable; /**< 复位使能
							*- ENABEL
							*- DISABLE
						   */
  FunctionalStateTypeDef interrupt_enable;/**< 中断使能
							*- ENABEL
							*- DISABLE
						   */
  uint16_t prescaler; /**< 分频系数
						  *- TC_WDP_16
						  *- TC_WDP_32
						  *- TC_WDP_64
						  *- TC_WDP_128
						  *- TC_WDP_256
						*- TC_WDP_512
						*- TC_WDP_1024
						*- TC_WDP_2048
						*/
  uint16_t tcmr; /**< 寄存器模数 */
  tc_callback_t callback;        /**< 回调函数*/
}TC_InitTypeDef;

/**
* @}
*/

/*** 全局变量声明 **************************************************************/
/** @defgroup TC_Exported_Variables Exported Variables
 *
 * @{
 */

 /**
  * @}
  */

/*** 函数声明 ******************************************************************/
/** @defgroup TC_Exported_Functions Exported Functions
 * @{
 */

  void HAL_TC_Init(TC_InitTypeDef  *tcit);
  void HAL_TC_FeedWatchdog(TC_InitTypeDef  *tcit);
  extern void HAL_TC_Callback(void *tcit);
  extern void TC_IRQHandler(void);
  uint16_t HAL_TC_GetCounter(TC_InitTypeDef  *tcit);
/**
 * @}
 */
/**
 * @}
 */
/**
 * @}
 */
#ifdef __cplusplus

#endif

#endif /* __TC_HAL_H */

