CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Source/ciu32l051_std_lptim.c

112 lines
2.9 KiB
C

/************************************************************************************************/
/**
* @file ciu32l051_std_lptim.c
* @author MCU Ecosystem Development Team
* @brief LPTIM STD库驱动。
* 实现LPTIM初始化等API。
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @addtogroup LPTIM
* @{
*
*/
/************************************************************************************************/
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32l051_std.h"
#ifdef STD_LPTIM_PERIPHERAL_USED
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @addtogroup LPTIM_External_Functions
* @{
*
*/
/************************************************************************************************/
/**
* @brief LPTIM初始化
* @param lptimx LPTIM外设
* @param lptim_init_param LPTIM初始化结构体指针
* @retval 无
*/
void std_lptim_init(LPTIM_t *lptimx, std_lptim_init_t *lptim_init_param)
{
/* 设置工作时钟 */
/* 设置时钟分频系数 */
/* 设置输出波形极性 */
/* 设置计数时钟源 */
MODIFY_REG(lptimx->CFG, (LPTIM_CFG_CKSEL | LPTIM_CFG_PRESC | LPTIM_CFG_COUNT_MODE | LPTIM_CFG_WAVPOL),
(lptim_init_param->clock_source | lptim_init_param->prescaler | lptim_init_param->count_source | lptim_init_param->out_polarity));
}
/**
* @brief LPTIM去初始化
* @param lptimx LPTIM外设
* @retval 无
*/
void std_lptim_deinit(LPTIM_t *lptimx)
{
if (lptimx == LPTIM1)
{
/* 复位LPTIM1并关闭时钟 */
std_rcc_apb1_reset(RCC_PERIPH_RESET_LPTIM1);
std_rcc_apb1_clk_disable(RCC_PERIPH_CLK_LPTIM1);
}
else if (lptimx == LPTIM2)
{
/* 复位LPTIM2并关闭时钟 */
std_rcc_apb1_reset(RCC_PERIPH_RESET_LPTIM2);
std_rcc_apb1_clk_disable(RCC_PERIPH_CLK_LPTIM2);
}
else
{
/* 无操作 */
}
}
/**
* @brief 设置std_lptim_init_t结构体成员变量为默认值
* @param lptim_init_struct 初始化结构体指针
* @retval 无
*/
void std_lptim_struct_init(std_lptim_init_t *lptim_init_struct)
{
lptim_init_struct->clock_source = LPTIM_CLK_SRC_INT;
lptim_init_struct->prescaler = LPTIM_PRESCALER_DIV1;
lptim_init_struct->count_source = LPTIM_COUNTER_CLK_INT;
lptim_init_struct->out_polarity = LPTIM_OUTPUT_POLARITY_REGULAR;
}
/**
* @}
*/
#endif /* STD_LPTIM_PERIPHERAL_USED */
/**
* @}
*/
/**
* @}
*/