/* ****************************************************************************** * @file HAL_COMP.h * @version V1.0.0 * @date 2020 * @brief Header file of COMP HAL module. ****************************************************************************** */ #ifndef __HAL_COMP_H__ #define __HAL_COMP_H__ #include "ACM32Fxx_HAL.h" #define COMP1 (0x01) #define COMP2 (0x02) /**************** Bit definition for COMP_CR1 and COMP_CR2 register **************************/ #define COMP_CR_LOCK (BIT31) #define COMP_CR_BLANKTIME_POS (29U) #define COMP_CR_BLANKTIME_MASK (BIT30|BIT29) #define COMP_CR_CRV_CFG_POS (25U) #define COMP_CR_CRV_CFG_MASK (BIT28|BIT27|BIT26|BIT25) #define COMP_CR_CRV_SEL (BIT24) #define COMP_CR_CRV_EN (BIT23) #define COMP_CR_WINMODE (BIT22) #define COMP_CR_WINOUT (BIT21) #define COMP_CR_POLARITY (BIT20) #define COMP_CR_FLTEN (BIT19) #define COMP_CR_FLTTIME_POS (16U) #define COMP_CR_FLTTIME_MASK (BIT18|BIT17|BIT16) #define COMP_CR_BLANKSEL_POS (12U) #define COMP_CR_BLANKSEL_MASK (BIT15|BIT14|BIT13|BIT12) #define COMP_CR_INPSEL_POS (8U) #define COMP_CR_INPSEL_MASK (BIT11|BIT10|BIT9|BIT8) #define COMP_CR_INMSEL_POS (4U) #define COMP_CR_INMSEL_MASK (BIT7|BIT6|BIT5|BIT4) #define COMP_CR_HYS_POS (1U) #define COMP_CR_HYS_MASK (BIT3|BIT2|BIT1) #define COMP_CR_EN (BIT0) /**************** Bit definition for COMP_SR register **************************/ #define COMP_SR_VCOUT2_ORG (BIT3) #define COMP_SR_VCOUT1_ORG (BIT2) #define COMP_SR_VCOUT2 (BIT1) #define COMP_SR_VCOUT1 (BIT0) /** * @brief COMP Configuration Structure definition */ typedef struct { uint8_t Comparator; /*!< Specify witch comparator be selected */ uint32_t Crv_En; uint32_t BlankTime; uint32_t Crv_Sel; uint32_t Crv_Cfg; uint32_t WinMode; uint32_t WinOut; uint32_t Polarity; uint32_t FltEn; uint32_t FltTime; uint32_t BlankSel; uint32_t InPSel; uint32_t InMSel; uint32_t HYS; }COMP_InitTypeDef; /** * @brief COMP handle Structure definition */ typedef struct { COMP_TypeDef *Instance; /*!< Register base address */ COMP_InitTypeDef Init; /*!< COMP required parameters */ uint8_t OutputLevel_Org; /*!< COMP OutputLevel original */ uint8_t OutputLevel; /*!< COMP OutputLevel with filter */ } COMP_HandleTypeDef; #define COMP_CR_CRV_EN_DISABLE (0U) #define COMP_CR_CRV_EN_ENABLE (1U) #define COMP_CR_CRV_SEL_AVDD (0U) #define COMP_CR_CRV_SEL_VREF (1U) #define COMP_CR1_WINMODE_COMP1_INPSEL (0U) #define COMP_CR1_WINMODE_COMP2_INPSEL (1U) #define COMP_CR2_WINMODE_COMP2_INPSEL (0U) #define COMP_CR2_WINMODE_COMP1_INPSEL (1U) #define COMP_CR1_WINOUT_VCOUT1 (0U) #define COMP_CR2_WINOUT_VCOUT2 (0U) #define COMP_CR_WINOUT_VCOUT12 (1U) #define COMP_CR_POLARITY_P (0U) #define COMP_CR_POLARITY_N (1U) #define COMP_CR_FLTEN_DISABLE (0U) #define COMP_CR_FLTEN_ENABLE (1U) #define COMP_CR_FLTTIME_1_CLK (0U) #define COMP_CR_FLTTIME_2_CLK (1U) #define COMP_CR_FLTTIME_4_CLK (2U) #define COMP_CR_FLTTIME_16_CLK (3U) #define COMP_CR_FLTTIME_64_CLK (4U) #define COMP_CR_FLTTIME_256_CLK (5U) #define COMP_CR_FLTTIME_1024_CLK (6U) #define COMP_CR_FLTTIME_4095_CLK (7U) #define COMP_CR_BLANKTIME_32_CLK (0U) #define COMP_CR_BLANKTIME_64_CLK (1U) #define COMP_CR_BLANKTIME_128_CLK (2U) #define COMP_CR_BLANKTIME_256_CLK (3U) #define COMP_CR_BLANKSEL_NONE (0U) #define COMP_CR_BLANKSEL_1 (1U) #define COMP_CR_BLANKSEL_2 (2U) #define COMP_CR_BLANKSEL_3 (4U) #define COMP_CR_BLANKSEL_4 (8U) #define COMP_CR_INPSEL_0 (0U) #define COMP_CR_INPSEL_1 (1U) #define COMP_CR_INPSEL_2 (2U) #define COMP_CR_INMSEL_0 (0U) #define COMP_CR_INMSEL_1 (1U) #define COMP_CR_INMSEL_2 (2U) #define COMP_CR_INMSEL_3 (3U) #define COMP_CR_HYS_DISABLE (0U) #define COMP_CR_HYS_1 (4U) #define COMP_CR_HYS_2 (5U) #define COMP_CR_HYS_3 (6U) #define COMP_CR_HYS_4 (7U) /******************************** COMP Instances *******************************/ #define IS_COMP_ALL_INSTANCE(INSTANCE) ((INSTANCE) == COMP) #define IS_COMP_ALL_COMP(_COMP) (((_COMP) == COMP1) || \ ((_COMP) == COMP2)) #define IS_COMP_ALL_CRV_EN(_CRV_EN) (((_CRV_EN) == COMP_CR_CRV_EN_DISABLE) || \ ((_CRV_EN) == COMP_CR_CRV_EN_ENABLE)) #define IS_COMP_ALL_CRV_SEL(_CRV_SEL) (((_CRV_SEL) == COMP_CR_CRV_SEL_AVDD) || \ ((_CRV_SEL) == COMP_CR_CRV_SEL_VREF)) #define IS_COMP_ALL_CRV_CFG(_CRV_CFG) ((_CRV_CFG) <= 15U) #define IS_COMP_ALL_WINMODE(WINMODE) (((WINMODE) == COMP_CR1_WINMODE_COMP1_INPSEL) || \ ((WINMODE) == COMP_CR1_WINMODE_COMP2_INPSEL) || \ ((WINMODE) == COMP_CR2_WINMODE_COMP2_INPSEL) || \ ((WINMODE) == COMP_CR2_WINMODE_COMP1_INPSEL)) #define IS_COMP_ALL_WINOUT(_WINOUT) (((_WINOUT) == COMP_CR1_WINOUT_VCOUT1) || \ ((_WINOUT) == COMP_CR2_WINOUT_VCOUT2) || \ ((_WINOUT) == COMP_CR_WINOUT_VCOUT12)) #define IS_COMP_ALL_POLARITY(POLARITY) (((POLARITY) == COMP_CR_POLARITY_N) || \ ((POLARITY) == COMP_CR_POLARITY_P)) #define IS_COMP_ALL_FLTEN(FLTEN) (((FLTEN) == COMP_CR_FLTEN_DISABLE) || \ ((FLTEN) == COMP_CR_FLTEN_ENABLE)) #define IS_COMP_ALL_FLTTIME(FLTTIME) (((FLTTIME) == COMP_CR_FLTTIME_1_CLK) || \ ((FLTTIME) == COMP_CR_FLTTIME_2_CLK) || \ ((FLTTIME) == COMP_CR_FLTTIME_4_CLK) || \ ((FLTTIME) == COMP_CR_FLTTIME_16_CLK) || \ ((FLTTIME) == COMP_CR_FLTTIME_64_CLK) || \ ((FLTTIME) == COMP_CR_FLTTIME_256_CLK) || \ ((FLTTIME) == COMP_CR_FLTTIME_1024_CLK) || \ ((FLTTIME) == COMP_CR_FLTTIME_4095_CLK)) #define IS_COMP_ALL_BLANKTIME(BLANKTIME) (((BLANKTIME) == COMP_CR_BLANKTIME_32_CLK) || \ ((BLANKTIME) == COMP_CR_BLANKTIME_64_CLK) || \ ((BLANKTIME) == COMP_CR_BLANKTIME_128_CLK) || \ ((BLANKTIME) == COMP_CR_BLANKTIME_256_CLK)) #define IS_COMP_ALL_BLANKSEL(BLANKSEL) (((BLANKSEL) == COMP_CR_BLANKSEL_NONE) || \ ((BLANKSEL) == COMP_CR_BLANKSEL_1) || \ ((BLANKSEL) == COMP_CR_BLANKSEL_2) || \ ((BLANKSEL) == COMP_CR_BLANKSEL_3) || \ ((BLANKSEL) == COMP_CR_BLANKSEL_4)) #define IS_COMP_ALL_INPSEL(INPSEL) (((INPSEL) == COMP_CR_INPSEL_0) || \ ((INPSEL) == COMP_CR_INPSEL_1) || \ ((INPSEL) == COMP_CR_INPSEL_2)) #define IS_COMP_ALL_INMSEL(INMSEL) (((INMSEL) == COMP_CR_INMSEL_0 ) || \ ((INMSEL) == COMP_CR_INMSEL_1 ) || \ ((INMSEL) == COMP_CR_INMSEL_2 ) || \ ((INMSEL) == COMP_CR_INMSEL_3 )) #define IS_COMP_ALL_HYS(_HYS) (((_HYS) == COMP_CR_HYS_DISABLE) || \ ((_HYS) == COMP_CR_HYS_1) || \ ((_HYS) == COMP_CR_HYS_2) || \ ((_HYS) == COMP_CR_HYS_3) || \ ((_HYS) == COMP_CR_HYS_4)) /* Function */ void HAL_COMP_MspInit(COMP_HandleTypeDef* hcomp); void HAL_COMP_MspDeInit(COMP_HandleTypeDef* hcomp); HAL_StatusTypeDef HAL_COMP_Init(COMP_HandleTypeDef* hcomp); HAL_StatusTypeDef HAL_COMP_DeInit(COMP_HandleTypeDef* hcomp); HAL_StatusTypeDef HAL_COMP_Enable(COMP_HandleTypeDef* hcomp); HAL_StatusTypeDef HAL_COMP_Disable(COMP_HandleTypeDef* hcomp); HAL_StatusTypeDef HAL_COMP_GetOutputLevel(COMP_HandleTypeDef* hcomp); HAL_StatusTypeDef HAL_COMP_Lock(COMP_HandleTypeDef* hcomp); HAL_StatusTypeDef HAL_COMP_Start(COMP_HandleTypeDef *hcomp); HAL_StatusTypeDef HAL_COMP_Stop(COMP_HandleTypeDef *hcomp); #endif