/**
  **********************************************************************************
  * @file    pit32_drv.c
  * @author  Product application department
  * @version V1.0
  * @date    2020.02.25
  * @brief   pit32模块driver层驱动.
  * 
  @verbatim
  ===================================================================================
                                  ##### 更新 #####
  ===================================================================================
  [..] 更新时间:
  [..] 更新人:
  [..] 更新内容:
        1. nothing.
  @endverbatim
  */

#include "pit32_drv.h"

/*** 全局变量定义 ***************************************************************/

/*** volatile **********/

/*** @ static **********/

/*** 常量定义 *******************************************************************/

/*** 函数定义 *******************************************************************/

/**
 * @brief pit32功能使能
 *
 * @param[in] ppit32 pit32实例
 * @param[in] status 使能状态
 * -ENABLE
 * -DISBALE
 * @return NONE
 */

void DRV_PIT32_Cmd(PIT32_TypeDef *ppit32,FunctionalStateTypeDef status)
{
	if(status == ENABLE)
	{
		_pit32_start(ppit32);
	}
	else
	{
		_pit32_stop(ppit32);
	}
}

/**
 * @brief pit32中断功能使能
 *
 * @param[in] ppit32 pit32实例
 * @param[in] status 使能状态
 * -ENABLE
 * -DISBALE
 * @return NONE
 */
void DRV_PIT32_InterruptCmd(PIT32_TypeDef *ppit32,FunctionalStateTypeDef status)
{
	if(status == ENABLE)
	{
		_pit32_en_interrupt(ppit32);
	}
	else
	{
		_pit32_dis_interrupt(ppit32);
	}
}

/**
 * @brief pit32reload功能使能
 *
 * @param[in] ppit32 pit32实例
 * @param[in] status 使能状态
 * -ENABLE
 * -DISBALE
 * @return NONE
 */
void DRV_PIT32_ReloadCmd(PIT32_TypeDef *ppit32,FunctionalStateTypeDef status)
{
	if(status == ENABLE)
	{
		_pit32_en_reload(ppit32);
	}
	else
	{
		_pit32_dis_reload(ppit32);
	}
}

/**
 * @brief pit32立即更新计数器使能
 *
 * @param[in] ppit32 pit32实例
 * @param[in] status 使能状态
 * -ENABLE
 * -DISBALE
 * @return NONE
 */
void DRV_PIT32_ImmediatelyUpdateCNTCmd(PIT32_TypeDef *ppit32,FunctionalStateTypeDef status)
{
	if(status == ENABLE)
	{
		_pit32_relaod_mode_immediat(ppit32);
	}
	else
	{
		_pit32_relaod_mode_cntzero(ppit32);
	}
}


/**
 * @brief pit32在debug模式下功能使能
 *
 * @param[in] ppit32 pit32实例
 * @param[in] status 使能状态
 * -ENABLE
 * -DISBALE
 * @return NONE
 */
void DRV_PIT32_DebugCmd(PIT32_TypeDef *ppit32,FunctionalStateTypeDef status)
{
	if(status == ENABLE)
	{
		_pit32_set_debug_run(ppit32);
	}
	else
	{
		_pit32_set_debug_stop(ppit32);
	}
}

/**
 * @brief pit32在doze模式下功能使能
 *
 * @param[in] ppit32 pit32实例
 * @param[in] status 使能状态
 * -ENABLE
 * -DISBALE
 * @return NONE
 */
void DRV_PIT32_DozeCmd(PIT32_TypeDef *ppit32,FunctionalStateTypeDef status)
{
	if(status == ENABLE)
	{
		_pit32_set_doze_run(ppit32);
	}
	else
	{
		_pit32_set_doze_stop(ppit32);
	}
}

/**
 * @brief pit32设置分频系数
 *
 * @param[in] ppit32 pit32实例
 * @param[in] prescaler 分频系数 @see PIT32_CLKDIV
 * @return NONE
 */
void DRV_PIT32_SetPrescaler(PIT32_TypeDef *ppit32,PIT32_CLKDIV prescaler)
{
	_pit32_set_prescaler(ppit32,prescaler);
}

/**
 * @brief pit32设置计数器
 *
 * @param[in] ppit32 pit32实例
 * @param[in] cnt 计数器值
 * @return NONE
 */
void DRV_PIT32_SetCounter(PIT32_TypeDef *ppit32,uint32_t cnt)
{
	_pit32_set_pmr_all(ppit32,cnt);
}

/**
 * @brief pit32获取当前计数器值
 *
 * @param[in] ppit32 pit32实例
 * @retval 当前计数器值
 */
uint32_t DRV_PIT32_GetCounter(PIT32_TypeDef *ppit32)
{
	return _pit32_get_pcntr_all(ppit32);
}



