123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- /**
- *******************************************************************************
- * @file hc32_ll_ctc.h
- * @brief This file contains all the functions prototypes of the Clock Trimming
- * Controller(CTC) driver library.
- @verbatim
- Change Logs:
- Date Author Notes
- 2022-12-31 CDT First version
- @endverbatim
- *******************************************************************************
- * Copyright (C) 2022, Xiaohua Semiconductor Co., Ltd. All rights reserved.
- *
- * This software component is licensed by XHSC under BSD 3-Clause license
- * (the "License"); You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at:
- * opensource.org/licenses/BSD-3-Clause
- *
- *******************************************************************************
- */
- #ifndef __HC32_LL_CTC_H__
- #define __HC32_LL_CTC_H__
- /* C binding of definitions if building with C++ compiler */
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /*******************************************************************************
- * Include files
- ******************************************************************************/
- #include "hc32_ll_def.h"
- #include "hc32f4xx.h"
- #include "hc32f4xx_conf.h"
- /**
- * @addtogroup LL_Driver
- * @{
- */
- /**
- * @addtogroup LL_CTC
- * @{
- */
- #if (LL_CTC_ENABLE == DDL_ON)
- /*******************************************************************************
- * Global type definitions ('typedef')
- ******************************************************************************/
- /**
- * @defgroup CTC_Global_Types CTC Global Types
- * @{
- */
- /**
- * @brief CTC continuous trim initialization structure definition
- */
- typedef struct {
- uint32_t u32HrcClockDiv; /*!< HRC clock division
- This parameter can be a value of @ref CTC_HRC_Clock_Division */
- uint32_t u32RefClockFreq; /*!< Reference clock frequency
- This parameter should refer user manual recommended values */
- uint32_t u32RefClockSrc; /*!< Reference clock source selection
- This parameter can be a value of @ref CTC_Continuous_Trim_Reference_Clock_Source */
- uint32_t u32RefClockDiv; /*!< Reference clock division
- This parameter can be a value of @ref CTC_Reference_Clock_Division */
- float32_t f32TolerantErrRate; /*!< CTC tolerance deviation
- This parameter can be a value between Min_Data=0.0 and Max_Data=1.0(100%) */
- uint8_t u8TrimValue; /*!< CTC TRMVAL value
- This parameter can be a value between Min_Data=0 and Max_Data=0x3F */
- } stc_ctc_ct_init_t;
- /**
- * @brief CTC single trim initialization structure definition
- */
- typedef struct {
- uint32_t u32HrcClockDiv; /*!< HRC clock division
- This parameter can be a value of @ref CTC_HRC_Clock_Division */
- uint32_t u32CtcRefEdge; /*!< CTCREF edge
- This parameter can be a value of @ref CTC_Single_Trim_CTCREF_Edge */
- float32_t f32CtcRefEdgeTime; /*!< CTCREF edge time(unit:S)
- This parameter should refer user actual CTCREF edge time */
- float32_t f32TolerantErrRate; /*!< CTC tolerance deviation
- This parameter can be a value between Min_Data=0.0 and Max_Data=1.0(100%) */
- uint8_t u8TrimValue; /*!< CTC TRMVAL value
- This parameter can be a value between Min_Data=0 and Max_Data=0x3F */
- } stc_ctc_st_init_t;
- /**
- * @}
- */
- /*******************************************************************************
- * Global pre-processor symbols/macros ('#define')
- ******************************************************************************/
- /**
- * @defgroup CTC_Global_Macros CTC Global Macros
- * @{
- */
- /**
- * @defgroup CTC_Continuous_Trim_Reference_Clock_Source CTC Continuous Trim Reference Clock Source
- * @{
- */
- #define CTC_REF_CLK_SRC_CTCREF (0UL) /*!< Clock source: CTCREF */
- #define CTC_REF_CLK_SRC_XTAL (CTC_CR1_REFCKS) /*!< Clock source: XTAL */
- #define CTC_REF_CLK_SRC_XTAL32 (CTC_CR1_REFCKS_1) /*!< Clock source: XTAL32 */
- /**
- * @}
- */
- /**
- * @defgroup CTC_Flag CTC Flag
- * @{
- */
- #define CTC_FLAG_TRIM_OK (CTC_STR_TRIMOK) /*!< Trimming OK flag */
- #define CTC_FLAG_TRIM_OVF (CTC_STR_TRMOVF) /*!< Trimming overflow flag */
- #define CTC_FLAG_TRIM_UDF (CTC_STR_TRMUDF) /*!< Trimming underflow flag */
- #define CTC_FLAG_BUSY (CTC_STR_CTCBSY) /*!< CTC busy flag */
- #define CTC_FLAG_ALL (CTC_FLAG_TRIM_OVF | CTC_FLAG_TRIM_UDF | \
- CTC_FLAG_TRIM_OK | CTC_FLAG_BUSY)
- /**
- * @}
- */
- /**
- * @defgroup CTC_Reference_Clock_Division CTC Reference Clock Division
- * @{
- */
- #define CTC_REF_CLK_DIV2 (0UL) /*!< REFCLK/2 */
- #define CTC_REF_CLK_DIV4 (1UL) /*!< REFCLK/4 */
- #define CTC_REF_CLK_DIV8 (2UL) /*!< REFCLK/8 */
- #define CTC_REF_CLK_DIV16 (3UL) /*!< REFCLK/16 */
- #define CTC_REF_CLK_DIV64 (4UL) /*!< REFCLK/64 */
- #define CTC_REF_CLK_DIV256 (5UL) /*!< REFCLK/256 */
- #define CTC_REF_CLK_DIV1024 (6UL) /*!< REFCLK/1024 */
- #define CTC_REF_CLK_DIV4096 (7UL) /*!< REFCLK/4096 */
- /**
- * @}
- */
- /**
- * @defgroup CTC_HRC_Clock_Division CTC HRC Clock Division
- * @{
- */
- #define CTC_HRC_CLK_DIV1 (0UL) /*!< HRCCLK/1 */
- #define CTC_HRC_CLK_DIV2 (1UL) /*!< HRCCLK/2 */
- #define CTC_HRC_CLK_DIV4 (2UL) /*!< HRCCLK/4 */
- #define CTC_HRC_CLK_DIV8 (3UL) /*!< HRCCLK/8 */
- #define CTC_HRC_CLK_DIV32 (4UL) /*!< HRCCLK/32 */
- #define CTC_HRC_CLK_DIV128 (5UL) /*!< HRCCLK/128 */
- #define CTC_HRC_CLK_DIV512 (6UL) /*!< HRCCLK/512 */
- #define CTC_HRC_CLK_DIV2048 (7UL) /*!< HRCCLK/2048 */
- /**
- * @}
- */
- /**
- * @defgroup CTC_Single_Trim_CTCREF_Edge CTC Single Trim CTCREF Edge
- * @{
- */
- #define CTC_CTCREF_RISING_RISING (0UL) /*!< CTC trim between CTCREF rising and CTCREF rising */
- #define CTC_CTCREF_RISING_FALLING (CTC_CR1_REFEDG_0) /*!< CTC trim between CTCREF rising and CTCREF failing */
- #define CTC_CTCREF_FALLING_RISING (CTC_CR1_REFEDG_1) /*!< CTC trim between CTCREF failing and CTCREF rising */
- #define CTC_CTCREF_FALLING_FALLING (CTC_CR1_REFEDG) /*!< CTC trim between CTCREF failing and CTCREF failing */
- /**
- * @}
- */
- /**
- * @}
- */
- /*******************************************************************************
- * Global variable definitions ('extern')
- ******************************************************************************/
- /*******************************************************************************
- Global function prototypes (definition in C source)
- ******************************************************************************/
- /**
- * @addtogroup CTC_Global_Functions
- * @{
- */
- /**
- * @brief Start CTC trimming.
- * @param None
- * @retval None
- */
- __STATIC_INLINE void CTC_Start(void)
- {
- SET_REG32_BIT(CM_CTC->CR1, CTC_CR1_CTCEN);
- }
- /**
- * @brief Stop CTC trimming.
- * @param None
- * @retval None
- */
- __STATIC_INLINE void CTC_Stop(void)
- {
- CLR_REG32_BIT(CM_CTC->CR1, CTC_CR1_CTCEN);
- }
- int32_t CTC_CT_StructInit(stc_ctc_ct_init_t *pstcCtcInit);
- int32_t CTC_CT_Init(const stc_ctc_ct_init_t *pstcCtcInit);
- int32_t CTC_ST_StructInit(stc_ctc_st_init_t *pstcCtcInit);
- int32_t CTC_ST_Init(const stc_ctc_st_init_t *pstcCtcInit);
- int32_t CTC_DeInit(void);
- void CTC_IntCmd(en_functional_state_t enNewState);
- en_flag_status_t CTC_GetStatus(uint32_t u32Flag);
- void CTC_SetTrimValue(uint8_t u8TrimValue);
- uint8_t CTC_GetTrimValue(void);
- void CTC_SetReloadValue(uint16_t u16ReloadValue);
- uint16_t CTC_GetReloadValue(void);
- void CTC_SetOffsetValue(uint8_t u8OffsetValue);
- uint8_t CTC_GetOffsetValue(void);
- uint16_t CTC_GetCountValue(void);
- /**
- * @}
- */
- #endif /* LL_CTC_ENABLE */
- /**
- * @}
- */
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __HC32_LL_CTC_H__ */
- /*******************************************************************************
- * EOF (not truncated)
- ******************************************************************************/
|