#ifndef HC32L1XX_LL_TRIM_H_
#define HC32L1XX_LL_TRIM_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "hc32l1xx.h"
#include "hc32l1xx_ll_bus.h"
///
//===监测模式使能
#define LL_TRIM_MON_ENABLE (TRIM_CR_EN)
//===监测模式不使能
#define LL_TRIM_MON_DISABLE (~TRIM_CR_EN)
//===校准时钟选择
#define LL_TRIM_CAL_CLK_SOURCE_RCH TRIM_CR_CALCLK_RCH
#define LL_TRIM_CAL_CLK_SOURCE_XTH TRIM_CR_CALCLK_XTH
#define LL_TRIM_CAL_CLK_SOURCE_RCL TRIM_CR_CALCLK_RCL
#define LL_TRIM_CAL_CLK_SOURCE_XTL TRIM_CR_CALCLK_XTL
#define LL_TRIM_CAL_CLK_SOURCE_PLL TRIM_CR_CALCLK_PLL
//===REF时钟选择
#define LL_TRIM_REF_CLK_SOURCE_RCH TRIM_CR_REFCLK_RCH
#define LL_TRIM_REF_CLK_SOURCE_XTH TRIM_CR_REFCLK_XTH
#define LL_TRIM_REF_CLK_SOURCE_RCL TRIM_CR_REFCLK_RCL
#define LL_TRIM_REF_CLK_SOURCE_XTL TRIM_CR_REFCLK_XTL
#define LL_TRIM_REF_CLK_SOURCE_IRC10K TRIM_CR_REFCLK_IRC10K
#define LL_TRIM_REF_CLK_SOURCE_EXCLK TRIM_CR_REFCLK_EXCLK
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_EnableIT(TRIM_TypeDef *TRIMx)
{
SET_BIT(TRIMx->CR, TRIM_CR_IE);
}
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_DisableIT(TRIM_TypeDef *TRIMx)
{
CLEAR_BIT(TRIMx->CR, TRIM_CR_IE);
}
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_IsEnabledIT(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->CR, TRIM_CR_IE) == TRIM_CR_IE);
}
///
//函 数:
//功 能: 使能监测模式
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_Enable_Mon(TRIM_TypeDef *TRIMx)
{
SET_BIT(TRIMx->CR, TRIM_CR_EN);
}
///
//函 数:
//功 能: 不使能监测模式
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_Disable_Mon(TRIM_TypeDef *TRIMx)
{
CLEAR_BIT(TRIMx->CR, TRIM_CR_EN);
}
///
//函 数:
//功 能: 启动
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_Enable(TRIM_TypeDef *TRIMx)
{
SET_BIT(TRIMx->CR, TRIM_CR_START);
}
///
//函 数:
//功 能: 停止
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_Disable(TRIM_TypeDef *TRIMx)
{
CLEAR_BIT(TRIMx->CR, TRIM_CR_START);
}
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_IsEnabled(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->CR, TRIM_CR_START) == TRIM_CR_START);
}
///
//函 数:
//功 能: 设置校准时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_SetCalClockSource(TRIM_TypeDef *TRIMx,uint32_t ClockSource)
{
uint32_t temp_reg = READ_REG(TRIMx->CR);
temp_reg&= (~TRIM_CR_CALCLK_MASK);
WRITE_REG(TRIMx->CR,temp_reg| ClockSource);
}
///
//函 数:
//功 能: 获取校准时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_GetCalClockSource(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->CR, TRIM_CR_CALCLK_MASK));
}
///
//函 数:
//功 能: 设置参考时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_SetCalCnt(TRIM_TypeDef *TRIMx, uint32_t cnt)
{
WRITE_REG(TRIMx->CALCNT, cnt);
}
///
//函 数:
//功 能: 设置校准时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_GetCalCnt(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_REG(TRIMx->CALCNT));
}
///
//函 数:
//功 能: 设置参考时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_SetCalCon(TRIM_TypeDef *TRIMx, uint32_t cnt)
{
WRITE_REG(TRIMx->CALCON, cnt);
}
///
//函 数:
//功 能: 设置校准时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_GetCalCon(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_REG(TRIMx->CALCON));
}
///
//函 数:
//功 能: 设置参考时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_SetRefClockSource(TRIM_TypeDef *TRIMx, uint32_t ClockSource)
{
MODIFY_REG(TRIMx->CR, TRIM_CR_REFCLK, ClockSource);
}
///
//函 数:
//功 能: 设置校准时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_GetRefClockSource(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->CR, TRIM_CR_REFCLK));
}
///
//函 数:
//功 能: 设置参考时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_SetRefCnt(TRIM_TypeDef *TRIMx, uint32_t cnt)
{
WRITE_REG(TRIMx->REFCNT, cnt);
}
///
//函 数:
//功 能: 设置校准时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_GetRefCnt(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_REG(TRIMx->REFCNT));
}
///
//函 数:
//功 能: 设置参考时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_SetRefCon(TRIM_TypeDef *TRIMx, uint32_t cnt)
{
WRITE_REG(TRIMx->REFCON, cnt);
}
///
//函 数:
//功 能: 设置校准时钟
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_GetRefCon(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_REG(TRIMx->REFCON));
}
///
//函 数:
//功 能: PLL失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_IsActiveFlag_PLL(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->SR, TRIM_SR_PLL));
}
///
//函 数:
//功 能: XTH失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_IsActiveFlag_XTH(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->SR, TRIM_SR_XTH));
}
///
//函 数:
//功 能: XTL失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_IsActiveFlag_XTL(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->SR, TRIM_SR_XTL));
}
///
//函 数:
//功 能: 校准溢出标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_IsActiveFlag_OverFlow(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->SR, TRIM_SR_CALOF));
}
///
//函 数:
//功 能: 参考计数器停止失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline uint32_t LL_TRIM_IsActiveFlag_Stop(TRIM_TypeDef *TRIMx)
{
return(uint32_t)(READ_BIT(TRIMx->SR, TRIM_SR_REFSTOP));
}
///
//函 数:
//功 能: PLL失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_ClearFlag_PLL(TRIM_TypeDef *TRIMx)
{
CLEAR_BIT(TRIMx->CSR, TRIM_CSR_PLL);
}
///
//函 数:
//功 能: XTH失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_ClearFlag_XTH(TRIM_TypeDef *TRIMx)
{
CLEAR_BIT(TRIMx->CSR, TRIM_CSR_XTH);
}
///
//函 数:
//功 能: XTL失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_ClearFlag_XTL(TRIM_TypeDef *TRIMx)
{
CLEAR_BIT(TRIMx->CSR, TRIM_CSR_XTL);
}
///
//函 数:
//功 能: XTH失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_ClearFlag_OverFlow(TRIM_TypeDef *TRIMx)
{
CLEAR_BIT(TRIMx->CR, TRIM_CR_START);
}
///
//函 数:
//功 能: XTL失效标志
//输入参 数:
//输出参 数:
//说 明:
//
static inline void LL_TRIM_ClearFlag_Stop(TRIM_TypeDef *TRIMx)
{
CLEAR_BIT(TRIMx->CR, TRIM_CR_START);
}
//===GPIO初始化结构体
typedef struct
{
uint32_t MonMode; //---监测模式
uint32_t CalClk; //---待校准/监测时钟
uint32_t RefClk; //---参考时钟
uint32_t CalCon; //---校准计数器配置初值
uint32_t RefCon; //---参考计数器配置初值
} LL_TRIM_InitTypeDef;
//===函数定义
uint8_t LL_TRIM_DeInit(TRIM_TypeDef *TRIMx);
uint8_t LL_TRIM_Init(TRIM_TypeDef *TRIMx, LL_TRIM_InitTypeDef *TRIM_InitTypeDef);
///
#ifdef __cplusplus
}
#endif
#endif /* HC32L1XX_LL_PCNT_H_ */
#include "hc32l1xx_ll_trim.h"
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
uint8_t LL_TRIM_DeInit(TRIM_TypeDef *TRIMx)
{
LL_PER0_GRP1_ForceReset(LL_PER0_GRP1_PERIPH_TRIM);
LL_PER0_GRP1_ReleaseReset(LL_PER0_GRP1_PERIPH_TRIM);
return 0;
}
///
//函 数:
//功 能:
//输入参 数:
//输出参 数:
//说 明:
//
uint8_t LL_TRIM_Init(TRIM_TypeDef *TRIMx, LL_TRIM_InitTypeDef *TRIM_InitTypeDef)
{
//---检测模式时钟
if (TRIM_InitTypeDef->MonMode == LL_TRIM_MON_ENABLE)
{
LL_TRIM_Enable_Mon(TRIMx);
}
else
{
LL_TRIM_Disable_Mon(TRIMx);
}
//---待校准时钟
LL_TRIM_SetCalClockSource(TRIMx, TRIM_InitTypeDef->CalClk);
//---参考时钟
LL_TRIM_SetRefClockSource(TRIMx, TRIM_InitTypeDef->RefClk);
//---待校准时钟计数器配置初值
LL_TRIM_SetCalCon(TRIMx, TRIM_InitTypeDef->CalCon);
//---参考时钟计数器配置初值
LL_TRIM_SetRefCon(TRIMx, TRIM_InitTypeDef->RefCon);
return 0;
}
HC32L17x的LL驱动库之trim
最新推荐文章于 2024-05-10 17:03:25 发布