HC32L17x的LL驱动库之trim

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值