/** ****************************************************************************** * @file ft32f0xx_comp.h * @author FMD AE * @brief This file contains all the functions prototypes for the COMP firmware * library * @version V1.0.0 * @data 2021-07-01 ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __FT32F0XX_COMP_H #define __FT32F0XX_COMP_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "ft32f0xx.h" /** @addtogroup COMP * @{ */ /* Exported types ------------------------------------------------------------*/ /** * @brief COMP Init structure definition */ typedef struct { uint32_t COMP_VipSel; /*!< Select the positive input of the comparator. This parameter can be a value of @ref COMP_VipSel */ uint32_t COMP_VinSel; /*!< Select the negative input of the comparator. This parameter can be a value of @ref COMP_VinSel */ uint32_t COMP_OutputSel; /*!< Selects The output selection of the comparator. This parameter can be a value of @ref COMP_OutputSel */ uint32_t COMP_Pol; /*!< Select the output polarity of the comparator. This parameter can be a value of @ref COMP_Pol */ }COMP_InitTypeDef; /* Exported constants --------------------------------------------------------*/ /** @defgroup COMP_Exported_Constants * @{ */ /** @defgroup COMP_Selection * @{ */ #define NCOMP_Selection_COMP ((uint32_t)0x00000000) /*!< NCOMP Selection */ #define PCOMP_Selection_COMP ((uint32_t)0x00000010) /*!< PCOMP Selection */ #define COMP_Selection_COMP3 ((uint32_t)0x00000001) /*!< PCOMP Selection */ #define IS_COMP_ALL_PERIPH(PERIPH) (((PERIPH) == NCOMP_Selection_COMP) || \ ((PERIPH) == PCOMP_Selection_COMP)) #define COMP_Selection_COMP1 NCOMP_Selection_COMP #define COMP_Selection_COMP2 PCOMP_Selection_COMP /** * @} */ /** @defgroup COMP_VipSel * @{ */ #define NCOMP_VIP_SEL_1WIRE ((uint32_t)0x00000000) #define NCOMP_VIP_SEL_PAD_PA1 ((uint32_t)0x00000002) #define NCOMP_VIP_SEL_PAD_PA4 ((uint32_t)0x00000004) #define NCOMP_VIP_SEL_PAD_PA13 ((uint32_t)0x00000006) #define NCOMP_VIP_SEL_PAD_PB12 ((uint32_t)0x00000008) #define PCOMP_VIP_SEL_PAD_PA3 ((uint32_t)0x00000000) #define PCOMP_VIP_SEL_PAD_PA4 ((uint32_t)0x00020000) #define PCOMP_VIP_SEL_PAD_PA13 ((uint32_t)0x00040000) #define PCOMP_VIP_SEL_PAD_PB12 ((uint32_t)0x00060000) #define COMP3_VIP_SEL_PAD_PF5 ((uint32_t)0x00000000) #define COMP3_VIP_SEL_PAD_PB12 ((uint32_t)0x00000002) #define COMP3_VIP_SEL_PAD_PA13 ((uint32_t)0x00000004) #define COMP3_VIP_SEL_PAD_PA4 ((uint32_t)0x00000006) #define IS_COMP_VIP_SEL(INPUT) (((INPUT) == NCOMP_VIP_SEL_1WIRE) || \ ((INPUT) == NCOMP_VIP_SEL_PAD_PA1) || \ ((INPUT) == NCOMP_VIP_SEL_PAD_PA4) || \ ((INPUT) == NCOMP_VIP_SEL_PAD_PA13) || \ ((INPUT) == NCOMP_VIP_SEL_PAD_PB12) || \ ((INPUT) == PCOMP_VIP_SEL_PAD_PA3) || \ ((INPUT) == PCOMP_VIP_SEL_PAD_PA4) || \ ((INPUT) == PCOMP_VIP_SEL_PAD_PA13) || \ ((INPUT) == PCOMP_VIP_SEL_PAD_PB12) ) /** * @} */ /** @defgroup COMP_VinSel * @{ */ #define NCOMP_VIN_SEL_DAC1_OUT ((uint32_t)0x00000000) #define NCOMP_VIN_SEL_PAD_PA0 ((uint32_t)0x00000010) #define NCOMP_VIN_SEL_PAD_PA4 ((uint32_t)0x00000020) #define NCOMP_VIN_SEL_PAD_PA5 ((uint32_t)0x00000030) #define PCOMP_VIN_SEL_DAC2_OUT ((uint32_t)0x00000000) #define PCOMP_VIN_SEL_PAD_PA2 ((uint32_t)0x00080000) #define PCOMP_VIN_SEL_PAD_PA4 ((uint32_t)0x00100000) #define PCOMP_VIN_SEL_PAD_PA5 ((uint32_t)0x00180000) #define COMP3_VIN_SEL_PAD_PF4 ((uint32_t)0x00000000) #define COMP3_VIN_SEL_DAC2_OUT ((uint32_t)0x00000010) #define COMP3_VIN_SEL_PAD_PA4 ((uint32_t)0x00000020) #define COMP3_VIN_SEL_PAD_PA5 ((uint32_t)0x00000030) #define IS_COMP_VINSEL(INPUT) (((INPUT) == NCOMP_VIN_SEL_DAC1_OUT) || \ ((INPUT) == NCOMP_VIN_SEL_PAD_PA0) || \ ((INPUT) == NCOMP_VIN_SEL_PAD_PA4) || \ ((INPUT) == NCOMP_VIN_SEL_PAD_PA5) || \ ((INPUT) == PCOMP_VIN_SEL_DAC2_OUT)|| \ ((INPUT) == PCOMP_VIN_SEL_PAD_PA2) || \ ((INPUT) == PCOMP_VIN_SEL_PAD_PA4) || \ ((INPUT) == PCOMP_VIN_SEL_PAD_PA5) ) /** * @} */ /** @defgroup COMP_OutputSel * @{ */ #define COMP_OUTPUT_NO_SELECTION ((uint32_t)0x00000000) #define NCOMP_OUTPUT_SEL_TIM1_CAPTURE1 ((uint32_t)0x00000200) #define NCOMP_OUTPUT_SEL_TIM1_OCREFCLEAR ((uint32_t)0x00000300) #define NCOMP_OUTPUT_SEL_TIM3_CAPTURE1 ((uint32_t)0x00000600) #define NCOMP_OUTPUT_SEL_TIM3_OCREFCLEAR ((uint32_t)0x00000700) #define PCOMP_OUTPUT_SEL_TIM1_BREAK ((uint32_t)0x01000000) #define PCOMP_OUTPUT_SEL_TIM1_CAPTURE1 ((uint32_t)0x02000000) #define PCOMP_OUTPUT_SEL_TIM1_OCREFCLEAR ((uint32_t)0x03000000) #define PCOMP_OUTPUT_SEL_TIM3_CAPTURE1 ((uint32_t)0x06000000) #define PCOMP_OUTPUT_SEL_TIM3_OCREFCLEAR ((uint32_t)0x07000000) #define COMP3_OUTPUT_SEL_TIM1_CAPTURE1 ((uint32_t)0x00000200) #define COMP3_OUTPUT_SEL_TIM1_OCREFCLEAR ((uint32_t)0x00000300) #define COMP3_OUTPUT_SEL_TIM3_CAPTURE1 ((uint32_t)0x00000600) #define COMP3_OUTPUT_SEL_TIM3_OCREFCLEAR ((uint32_t)0x00000700) #define IS_COMP_OUTPUT_SEL(SEL) ( ((SEL) == NCOMP_OUTPUT_SEL_TIM1_CAPTURE1) || \ ((SEL) == NCOMP_OUTPUT_SEL_TIM1_OCREFCLEAR) ||\ ((SEL) == NCOMP_OUTPUT_SEL_TIM3_CAPTURE1) ||\ ((SEL) == NCOMP_OUTPUT_SEL_TIM3_OCREFCLEAR) ||\ ((SEL) == PCOMP_OUTPUT_SEL_TIM1_BREAK) ||\ ((SEL) == PCOMP_OUTPUT_SEL_TIM1_CAPTURE1) ||\ ((SEL) == PCOMP_OUTPUT_SEL_TIM1_OCREFCLEAR) ||\ ((SEL) == PCOMP_OUTPUT_SEL_TIM3_CAPTURE1) ||\ ((SEL) == PCOMP_OUTPUT_SEL_TIM3_OCREFCLEAR) ||\ ((SEL) == COMP_OUTPUT_NO_SELECTION) ) /** * @} */ /** @defgroup COMP_Pol * @{ */ #define NCOMP_POL_NOT_INVERT ((uint32_t)0x00000000) #define NCOMP_POL_INVERT ((uint32_t)0x00000800) #define PCOMP_POL_NOT_INVERT ((uint32_t)0x00000000) #define PCOMP_POL_INVERT ((uint32_t)0x08000000) #define COMP3_POL_NOT_INVERT ((uint32_t)0x00000000) #define COMP3_POL_INVERT ((uint32_t)0x00000800) #define IS_COMP_POL(POL) ( ((POL) == NCOMP_POL_NOT_INVERT) || \ ((POL) == NCOMP_POL_INVERT) || \ ((POL) == PCOMP_POL_NOT_INVERT) || \ ((POL) == PCOMP_POL_INVERT) ) /** * @} */ /** * @} */ /** @defgroup COMP_OutputLevel * @{ */ /* When output polarity is not inverted, comparator output is high when the non-inverting input is at a higher voltage than the inverting input */ #define COMP_OutputLevel_High COMP_CSR_COMP1OUT /* When output polarity is not inverted, comparator output is low when the non-inverting input is at a lower voltage than the inverting input*/ #define COMP_OutputLevel_Low ((uint32_t)0x00000000) #define IS_COMP_OUTPUT_LEVEL(LEVEL) (((LEVEL) == COMP_CSR_COMP1OUT) || \ ((LEVEL) == COMP_CSR_COMP2OUT)) /** * @} */ /** * @} */ /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ /* Function used to set the COMP configuration to the default reset state ****/ void COMP_DeInit(void); /* Initialization and Configuration functions *********************************/ void COMP_Init(uint32_t COMP_Selection, COMP_InitTypeDef* COMP_InitStruct); void COMP_StructInit(COMP_InitTypeDef* COMP_InitStruct); void COMP_Cmd(uint32_t COMP_Selection, FunctionalState NewState); uint32_t COMP_GetOutputLevel(uint32_t COMP_Selection); /* Window mode control function ***********************************************/ void COMP_WindowCmd(FunctionalState NewState); /* COMP configuration locking function ****************************************/ void COMP_LockConfig(uint32_t COMP_Selection); #ifdef __cplusplus } #endif #endif /*__FT32F0XX_COMP_H */ /** * @} */ /** * @} */ /************************ (C) COPYRIGHT FMD *****END OF FILE****/