/**
******************************************************************************
* @file stm8l10x_comp.h
* @brief This file contains all functions prototype and macros for the COMP peripheral.
* @author STMicroelectronics - MCD Application Team
* @version V1.1.0
* @date 09/14/2009
******************************************************************************
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
*
© COPYRIGHT 2009 STMicroelectronics
* @image html logo.bmp
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM8L10x_COMP_H
#define __STM8L10x_COMP_H
/* Includes ------------------------------------------------------------------*/
#include "stm8l10x.h"
/* Exported variables ------------------------------------------------------- */
/* Exported types ------------------------------------------------------------*/
/** @addtogroup COMP_Exported_Types
* @{
*/
/**
* @brief COMP TIM2 configuration
*/
typedef enum
{
COMP_TIM2Config_IC1 = ((uint8_t)0x00), /*!< Input capture 1 selection. */
COMP_TIM2Config_BK = ((uint8_t)0x80) /*!< Break selection */
}COMP_TIM2Config_TypeDef;
/**
* @brief COMPs Selection
*/
typedef enum
{
COMP_Selection_None = ((uint8_t)0x00), /*!< None comparator enable. */
COMP_Selection_COMP1 = ((uint8_t)0x02), /*!< First comparator enable.*/
COMP_Selection_COMP2 = ((uint8_t)0x04), /*!< Second comparator enable. */
COMP_Selection_All = ((uint8_t)0x06) /*!< Both comparator enable. */
}COMP_Selection_TypeDef;
/**
* @brief COMP Polarity
*/
typedef enum
{
COMP_Polarity_High = ((uint8_t)0x00), /*!< For a detected event, output comparator is 1 */
COMP_Polarity_Low = ((uint8_t)0x10) /*!< For a detected event, output comparator is 0 */
}COMP_Polarity_TypeDef;
/**
* @brief COMP reference
*/
typedef enum
{
COMP_Reference_Internal = ((uint8_t)0x00), /*!< Comparator reference is internal */
COMP_Reference_External = ((uint8_t)0x08) /*!< Comparator reference is external */
}COMP_Reference_TypeDef;
/**
* @brief COMP interrupt sources
*/
typedef enum
{
COMP_IT_ITEN1 = ((uint8_t)0x20), /*!< First comparator interrupt enable */
COMP_IT_ITEN2 = ((uint8_t)0x80), /*!< Second comparator interrupt enable */
COMP_IT_CEF1 = ((uint8_t)0x10), /*!< First comparator pending bit */
COMP_IT_CEF2 = ((uint8_t)0x40) /*!< Second comparator pending bit */
}COMP_IT_TypeDef;
/**
* @brief COMP Flags
*/
typedef enum
{
COMP_FLAG_COMP1 = ((uint8_t)0x10), /*!< First comparator event flag. */
COMP_FLAG_COMP2 = ((uint8_t)0x40) /*!< Second comparator event flag. */
}COMP_FLAG_TypeDef;
/**
* @brief COMP Output
*/
typedef enum
{
COMP_Output_COMP1 = ((uint8_t)0x01), /*!< First comparator output. */
COMP_Output_COMP2 = ((uint8_t)0x02) /*!< Second comparator output. */
}COMP_Output_TypeDef;
/**
* @brief COMP w/ TIMx Connection Mode
*/
typedef enum
{
COMP_TimersConnection_None = ((uint8_t)0x00), /*!< No connection */
COMP_TimersConnection_COMP1ToTIM2IC1BK = ((uint8_t)0x20), /*!< Comparator 1 sent to Input capture 1/ Break TIM2 */
COMP_TimersConnection_COMP1ToTIM2IC1BK_COMP2ToTIM2IC2 = ((uint8_t)0x40), /*!< Comparator 1 sent to Input capture 1/ Break TIM2 and comparator 2 sent to Input capture 2 TIM2 */
COMP_TimersConnection_COMP1ToTIM2IC1BK_COMP2ToTIM3IC2 = ((uint8_t)0x60) /*!< Comparator 1 sent to Input capture 1/ Break TIM2 and comparator 2 sent to Input capture 1 TIM3 */
}COMP_TimersConnection_TypeDef;
/**
* @brief COMP Switch
*/
typedef enum
{
COMP_Switch_COMP1Ch1 = ((uint8_t)0x01), /*!< Comparator 1 Switch 1 Enable. */
COMP_Switch_COMP1Ch2 = ((uint8_t)0x02), /*!< Comparator 1 Switch 2 Enable. */
COMP_Switch_COMP1Ch3 = ((uint8_t)0x04), /*!< Comparator 1 Switch 3 Enable. */
COMP_Switch_COMP1Ch4 = ((uint8_t)0x08), /*!< Comparator 1 Switch 4 Enable. */
COMP_Switch_COMP2Ch1 = ((uint8_t)0x10), /*!< Comparator 2 Switch 1 Enable. */
COMP_Switch_COMP2Ch2 = ((uint8_t)0x20), /*!< Comparator 2 Switch 2 Enable. */
COMP_Switch_COMP2Ch3 = ((uint8_t)0x40), /*!< Comparator 2 Switch 3 Enable. */
COMP_Switch_COMP2Ch4 = ((uint8_t)0x80) /*!< Comparator 2 Switch 4 Enable. */
}COMP_Switch_TypeDef;
/**
* @}
*/
/* Exported constants --------------------------------------------------------*/
/* Exported macros -----------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
/** @addtogroup COMP_Private_Macros
* @{
*/
/**
* @brief Macro used by the assert function to check the different functions parameters.
*/
/**
* @brief Macro used by the assert function to check the different TIM2 confihuration .
*/
#define IS_COMP_TIM2CONFIG(TIM2CONFIG) \
(((TIM2CONFIG) == COMP_TIM2Config_IC1) || \
((TIM2CONFIG) == COMP_TIM2Config_BK))
/**
* @brief Macro used by the assert function to check the different Comparator selection.
*/
#define IS_COMP_SELECTION(SELECTION) \
(((SELECTION) == COMP_Selection_None) || \
((SELECTION) == COMP_Selection_COMP1) || \
((SELECTION) == COMP_Selection_COMP2) || \
((SELECTION) == COMP_Selection_All))
/**
* @brief Macro used by the assert function to check the different comparator polarity.
*/
#define IS_COMP_POLARITY(POLARITY) \
(((POLARITY) == COMP_Polarity_High) || \
((POLARITY) == COMP_Polarity_Low))
/**
* @brief Macro used by the assert function to check the different comparator reference.
*/
#define IS_COMP_REFERENCE(REFERENCE) \
(((REFERENCE) == COMP_Reference_Internal) || \
((REFERENCE) == COMP_Reference_External))
/**
* @brief Macro used by the assert function to check the different comparator interrupts.
*/
#define IS_COMP_IT(IT) \
(((IT) == COMP_IT_ITEN1) || \
((IT) == COMP_IT_ITEN2))
/**
* @brief Macro used by the assert function to check the different comparator flags.
*/
#define IS_COMP_FLAG(FLAG) \
(((FLAG) == COMP_FLAG_COMP1) || \
((FLAG) == COMP_FLAG_COMP2) || \
((FLAG) == ((uint8_t)COMP_FLAG_COMP2|(uint8_t)COMP_FLAG_COMP2)))
/**
* @brief Macro used by the assert function to check the different comparator output.
*/
#define IS_COMP_OUTPUT(OUTPUT) \
(((OUTPUT) == COMP_Output_COMP1) || \
((OUTPUT) == COMP_Output_COMP2))
/**
* @brief Macro used by the assert function to check the different comparator pending bits.
*/
#define IS_COMP_ITPENDINGBIT(PENDINGBIT) \
(((PENDINGBIT) == COMP_IT_CEF1) || \
((PENDINGBIT) == COMP_IT_CEF2))
/**
* @brief Macro used by the assert function to check the different comparator connection to timer1/2.
*/
#define IS_COMP_TIMCONNECTION(CONNECTION) \
(((CONNECTION) == COMP_TimersConnection_None) || \
((CONNECTION) == COMP_TimersConnection_COMP1ToTIM2IC1BK) || \
((CONNECTION) == COMP_TimersConnection_COMP1ToTIM2IC1BK_COMP2ToTIM2IC2) || \
((CONNECTION) == COMP_TimersConnection_COMP1ToTIM2IC1BK_COMP2ToTIM3IC2))
/**
* @brief Macro used by the assert function to check the different comparator switchs.
*/
#define IS_COMP_SWITCH(SWITCH) \
(((SWITCH) == COMP_Switch_COMP1Ch1) || \
((SWITCH) == COMP_Switch_COMP1Ch2) || \
((SWITCH) == COMP_Switch_COMP1Ch3) || \
((SWITCH) == COMP_Switch_COMP1Ch4) || \
((SWITCH) == COMP_Switch_COMP2Ch1) || \
((SWITCH) == COMP_Switch_COMP2Ch2) || \
((SWITCH) == COMP_Switch_COMP2Ch3) || \
((SWITCH) == COMP_Switch_COMP2Ch4))
/**
* @}
*/
/* Exported functions --------------------------------------------------------*/
/** @addtogroup COMP_Exported_Functions
* @{
*/
void COMP_DeInit(void);
void COMP_Init(COMP_Selection_TypeDef COMP_Selection,
COMP_Reference_TypeDef COMP_Reference,
COMP_Polarity_TypeDef COMP_Polarity);
void COMP_Cmd(FunctionalState NewState);
void COMP_SelectionConfig(COMP_Selection_TypeDef COMP_Selection,
FunctionalState NewState);
void COMP_ITConfig(COMP_IT_TypeDef COMP_IT,
FunctionalState NewState);
void COMP_TIM2Config(COMP_TIM2Config_TypeDef COMP_TIM2Config);
void COMP_SwitchConfig(COMP_Switch_TypeDef COMP_Switch,
FunctionalState NewState);
void COMP_TIMConnect(COMP_TimersConnection_TypeDef COMP_TIMConnection);
void COMP_SelectPolarity(COMP_Polarity_TypeDef COMP_Polarity);
void COMP_SetReference(COMP_Reference_TypeDef COMP_Reference);
FlagStatus COMP_GetOutputStatus(COMP_Output_TypeDef COMP_Output);
FlagStatus COMP_GetFlagStatus(COMP_FLAG_TypeDef COMP_Flag);
void COMP_ClearFlag(COMP_FLAG_TypeDef COMP_Flag);
ITStatus COMP_GetITStatus(COMP_IT_TypeDef COMP_ITPendingBit);
void COMP_ClearITPendingBit(COMP_IT_TypeDef COMP_ITPendingBit);
/**
* @}
*/
#endif /* __STM8L10x_COMP_H */
/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/