]> git.donarmstrong.com Git - qmk_firmware.git/blob - tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32L1/stm32l1xx_hal_comp.h
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
[qmk_firmware.git] / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_STM / TARGET_STM32L1 / stm32l1xx_hal_comp.h
1 /**
2   ******************************************************************************
3   * @file    stm32l1xx_hal_comp.h
4   * @author  MCD Application Team
5   * @version V1.0.0
6   * @date    5-September-2014
7   * @brief   Header file of COMP HAL module.
8   ******************************************************************************
9   * @attention
10   *
11   * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
12   *
13   * Redistribution and use in source and binary forms, with or without modification,
14   * are permitted provided that the following conditions are met:
15   *   1. Redistributions of source code must retain the above copyright notice,
16   *      this list of conditions and the following disclaimer.
17   *   2. Redistributions in binary form must reproduce the above copyright notice,
18   *      this list of conditions and the following disclaimer in the documentation
19   *      and/or other materials provided with the distribution.
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors
21   *      may be used to endorse or promote products derived from this software
22   *      without specific prior written permission.
23   *
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34   *
35   ******************************************************************************  
36   */
37
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32L1xx_HAL_COMP_H
40 #define __STM32L1xx_HAL_COMP_H
41
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32l1xx_hal_def.h"
48
49 /** @addtogroup STM32L1xx_HAL_Driver
50   * @{
51   */
52
53 /** @addtogroup COMP
54   * @{
55   */ 
56
57 /* Exported types ------------------------------------------------------------*/ 
58 /** @defgroup COMP_Exported_Types COMP Exported Types
59   * @{
60   */
61     
62 /** 
63   * @brief  COMP Init structure definition  
64   */
65 typedef struct
66 {
67
68   uint32_t InvertingInput;        /*!< Selects the inverting input of the comparator.
69                                        This parameter can be a value of @ref COMP_InvertingInput
70                                        Note: Inverting input can be changed on the fly, while comparator is running.
71                                        Note: This feature is available on COMP2 only. If COMP1 is selected, this parameter is discarded (On COMP1, inverting input is fixed to Vrefint). */
72
73   uint32_t NonInvertingInput;     /*!< Selects the non inverting input of the comparator.
74                                        This parameter can be a value of @ref COMPEx_NonInvertingInput */
75
76   uint32_t Output;                /*!< Selects the output redirection of the comparator.
77                                        This parameter can be a value of @ref COMP_Output
78                                        Note: This feature is available on COMP2 only. If COMP1 is selected, this parameter is discarded. */
79
80   uint32_t Mode;                  /*!< Selects the operating consumption mode of the comparator
81                                        to adjust the speed/consumption.
82                                        This parameter can be a value of @ref COMP_Mode
83                                        Note: This feature is available on COMP2 only. If COMP1 is selected, this parameter is discarded. */
84                                          
85   uint32_t WindowMode;            /*!< Selects the window mode of the 2 comparators.
86                                        If enabled, non-inverting inputs of the 2 comparators are connected together and are using inputs of COMP2 only (COMP1 non-inverting input is no more accessible, even from ADC channel VCOMP).
87                                        This parameter can be a value of @ref COMP_WindowMode
88                                        Note: This feature must be enabled from COMP2 instance. If COMP1 is selected, this parameter is discarded. */
89
90   uint32_t TriggerMode;           /*!< Selects the trigger mode of the comparator when using interruption on EXTI line (interrupt mode).
91                                        This parameter can be a value of @ref COMP_TriggerMode
92                                        Note: This feature is used with function "HAL_COMP_Start_IT()". In all other functions, this parameter is discarded. */
93
94   uint32_t NonInvertingInputPull; /*!< Selects the internal pulling resistor connected on non inverting input.
95                                        This parameter can be a value of @ref COMP_NonInvertingInputPull
96                                        Note: To avoid extra power consumption, only one resistor should be enabled at a time.
97                                        Note: This feature is available on COMP1 only. If COMP2 is selected, this parameter is discarded. */
98   
99 }COMP_InitTypeDef;
100
101 /** 
102   * @brief  HAL State structures definition  
103   */ 
104 typedef enum
105 {
106   HAL_COMP_STATE_RESET             = 0x00,    /*!< COMP not yet initialized or disabled             */
107   HAL_COMP_STATE_READY             = 0x01,    /*!< COMP initialized and ready for use               */
108   HAL_COMP_STATE_READY_LOCKED      = 0x11,    /*!< COMP initialized but the configuration is locked */
109   HAL_COMP_STATE_BUSY              = 0x02,    /*!< COMP is running                                  */
110   HAL_COMP_STATE_BUSY_LOCKED       = 0x12     /*!< COMP is running and the configuration is locked  */
111 }HAL_COMP_StateTypeDef;
112
113 /** 
114   * @brief  COMP Handle Structure definition  
115   */ 
116 typedef struct
117 {
118   COMP_TypeDef       *Instance;       /*!< Register base address    */
119   COMP_InitTypeDef   Init;            /*!< COMP required parameters */
120   HAL_LockTypeDef    Lock;            /*!< Locking object           */
121   __IO HAL_COMP_StateTypeDef  State;  /*!< COMP communication state */
122 } COMP_HandleTypeDef;
123
124 /**
125   * @}
126   */
127
128 /* Exported constants --------------------------------------------------------*/
129 /** @defgroup COMP_Exported_Constants COMP Exported Constants
130   * @{
131   */
132
133 /** @defgroup COMP_Output COMP Output
134   * @{
135   */
136 #define COMP_OUTPUT_TIM2IC4                     ((uint32_t)0x00000000)                                      /*!< COMP2 output connected to TIM2 Input Capture 4 */
137 #define COMP_OUTPUT_TIM2OCREFCLR                (                                        COMP_CSR_OUTSEL_0) /*!< COMP2 output connected to TIM2 OCREF Clear */
138 #define COMP_OUTPUT_TIM3IC4                     (                    COMP_CSR_OUTSEL_1                    ) /*!< COMP2 output connected to TIM3 Input Capture 4 */
139 #define COMP_OUTPUT_TIM3OCREFCLR                (                    COMP_CSR_OUTSEL_1 | COMP_CSR_OUTSEL_0) /*!< COMP2 output connected to TIM3 OCREF Clear */
140 #define COMP_OUTPUT_TIM4IC4                     (COMP_CSR_OUTSEL_2                                        ) /*!< COMP2 output connected to TIM4 Input Capture 4 */
141 #define COMP_OUTPUT_TIM4OCREFCLR                (COMP_CSR_OUTSEL_2                     | COMP_CSR_OUTSEL_0) /*!< COMP2 output connected to TIM4 OCREF Clear */
142 #define COMP_OUTPUT_TIM10IC1                    (COMP_CSR_OUTSEL_2 | COMP_CSR_OUTSEL_1                    ) /*!< COMP2 output connected to TIM10 Input Capture 1 */
143 #define COMP_OUTPUT_NONE                        (COMP_CSR_OUTSEL_2 | COMP_CSR_OUTSEL_1 | COMP_CSR_OUTSEL_0) /*!< COMP2 output is not connected to other peripherals */
144
145 #define IS_COMP_OUTPUT(OUTPUT) (((OUTPUT) == COMP_OUTPUT_TIM2IC4)      || \
146                                 ((OUTPUT) == COMP_OUTPUT_TIM2OCREFCLR) || \
147                                 ((OUTPUT) == COMP_OUTPUT_TIM3IC4)      || \
148                                 ((OUTPUT) == COMP_OUTPUT_TIM3OCREFCLR) || \
149                                 ((OUTPUT) == COMP_OUTPUT_TIM4IC4)      || \
150                                 ((OUTPUT) == COMP_OUTPUT_TIM4OCREFCLR) || \
151                                 ((OUTPUT) == COMP_OUTPUT_TIM10IC1)     || \
152                                 ((OUTPUT) == COMP_OUTPUT_NONE)           )
153 /**
154   * @}
155   */ 
156
157 /** @defgroup COMP_InvertingInput COMP InvertingInput
158   * @{
159   */
160 /* Inverting Input specific to COMP2 */
161 #define COMP_INVERTINGINPUT_IO                  (                                      COMP_CSR_INSEL_0) /*!< External I/O (COMP2_INM connected to pin PB3) connected to comparator 2 inverting input */
162 #define COMP_INVERTINGINPUT_VREFINT             (                   COMP_CSR_INSEL_1                   ) /*!< VREFINT connected to comparator 2 inverting input */
163 #define COMP_INVERTINGINPUT_3_4VREFINT          (                   COMP_CSR_INSEL_1 | COMP_CSR_INSEL_0) /*!< 3/4 VREFINT connected to comparator 2 inverting input */
164 #define COMP_INVERTINGINPUT_1_2VREFINT          (COMP_CSR_INSEL_2                                      ) /*!< 1/2 VREFINT connected to comparator 2 inverting input */
165 #define COMP_INVERTINGINPUT_1_4VREFINT          (COMP_CSR_INSEL_2                    | COMP_CSR_INSEL_0) /*!< 1/4 VREFINT connected to comparator 2 inverting input */
166 #define COMP_INVERTINGINPUT_DAC1                (COMP_CSR_INSEL_2 | COMP_CSR_INSEL_1                   ) /*!< DAC_OUT1 (PA4) connected to comparator 2 inverting input */
167 #define COMP_INVERTINGINPUT_DAC2                (COMP_CSR_INSEL_2 | COMP_CSR_INSEL_1 | COMP_CSR_INSEL_0) /*!< DAC2_OUT (PA5) connected to comparator 2 inverting input */
168
169 #define IS_COMP_INVERTINGINPUT(INPUT) (((INPUT) == COMP_INVERTINGINPUT_IO)         || \
170                                        ((INPUT) == COMP_INVERTINGINPUT_VREFINT)    || \
171                                        ((INPUT) == COMP_INVERTINGINPUT_3_4VREFINT) || \
172                                        ((INPUT) == COMP_INVERTINGINPUT_1_2VREFINT) || \
173                                        ((INPUT) == COMP_INVERTINGINPUT_1_4VREFINT) || \
174                                        ((INPUT) == COMP_INVERTINGINPUT_DAC1)       || \
175                                        ((INPUT) == COMP_INVERTINGINPUT_DAC2)         )
176 /**
177   * @}
178   */
179
180 /** @defgroup COMP_Mode COMP Mode
181   * @{
182   */
183 /* Please refer to the electrical characteristics in the device datasheet for
184    the power consumption values */
185 #define COMP_MODE_LOWSPEED          ((uint32_t)0x00000000)  /*!< Low Speed */
186 #define COMP_MODE_HIGHSPEED         COMP_CSR_SPEED          /*!< High Speed */
187
188 #define IS_COMP_MODE(SPEED)    (((SPEED) == COMP_MODE_LOWSPEED) || \
189                                 ((SPEED) == COMP_MODE_HIGHSPEED))
190 /**
191   * @}
192   */
193
194 /** @defgroup COMP_WindowMode COMP WindowMode
195   * @{
196   */
197 #define COMP_WINDOWMODE_DISABLED               ((uint32_t)0x00000000)  /*!< Window mode disabled: COMP1 non-inverting input is independant */
198 #define COMP_WINDOWMODE_ENABLED                COMP_CSR_WNDWE          /*!< Window mode enabled: COMP1 non-inverting input is no more accessible, even from ADC channel VCOMP) (connected to COMP2 non-inverting input) */
199
200 #define IS_COMP_WINDOWMODE(WINDOWMODE) (((WINDOWMODE) == COMP_WINDOWMODE_DISABLED) || \
201                                         ((WINDOWMODE) == COMP_WINDOWMODE_ENABLED))
202 /**
203   * @}
204   */
205
206 /** @defgroup COMP_OutputLevel COMP OutputLevel
207   * @{
208   */ 
209 /* Comparator output is low when the non-inverting input is at a lower        */
210 /* voltage than the inverting input.                                          */
211 #define COMP_OUTPUTLEVEL_LOW                   ((uint32_t)0x00000000)
212
213 /* Comparator output is high when the non-inverting input is at a higher      */
214 /* voltage than the inverting input.                                          */
215 #define COMP_OUTPUTLEVEL_HIGH                  ((uint32_t)0x00000001)
216 /**
217   * @}
218   */ 
219
220 /** @defgroup COMP_TriggerMode COMP TriggerMode 
221   * @{
222   */
223 #define COMP_TRIGGERMODE_NONE                  ((uint32_t)0x00000000)   /*!< No External Interrupt trigger detection */
224 #define COMP_TRIGGERMODE_IT_RISING             ((uint32_t)0x00000001)   /*!< External Interrupt Mode with Rising edge trigger detection */
225 #define COMP_TRIGGERMODE_IT_FALLING            ((uint32_t)0x00000002)   /*!< External Interrupt Mode with Falling edge trigger detection */
226 #define COMP_TRIGGERMODE_IT_RISING_FALLING     ((uint32_t)0x00000003)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection */
227
228 #define IS_COMP_TRIGGERMODE(MODE)  (((MODE) == COMP_TRIGGERMODE_NONE)             || \
229                                     ((MODE) == COMP_TRIGGERMODE_IT_RISING)        || \
230                                     ((MODE) == COMP_TRIGGERMODE_IT_FALLING)       || \
231                                     ((MODE) == COMP_TRIGGERMODE_IT_RISING_FALLING)  )
232 /**
233   * @}
234   */ 
235
236 /** @defgroup COMP_ExtiLineEvent COMP ExtiLineEvent
237   * @{
238   */
239 #define COMP_EXTI_LINE_COMP1_EVENT             EXTI_RTSR_TR21  /*!< External interrupt line 21 Connected to COMP1 */
240 #define COMP_EXTI_LINE_COMP2_EVENT             EXTI_RTSR_TR22  /*!< External interrupt line 22 Connected to COMP2 */
241
242 /**
243   * @}
244   */
245
246 /** @defgroup COMP_NonInvertingInputPull COMP NonInvertingInputPull
247   * @{
248   */
249 #define COMP_NONINVERTINGINPUT_NOPULL           ((uint32_t)0x00000000)  /*!< No internal pull-up or pull-down resistor connected to comparator non inverting input */
250 #define COMP_NONINVERTINGINPUT_10KPU            COMP_CSR_10KPU          /*!< Internal 10kOhm pull-up resistor connected to comparator non inverting input */
251 #define COMP_NONINVERTINGINPUT_10KPD            COMP_CSR_10KPD          /*!< Internal 10kOhm pull-down resistor connected to comparator non inverting input */
252 #define COMP_NONINVERTINGINPUT_400KPU           COMP_CSR_400KPU         /*!< Internal 400kOhm pull-up resistor connected to comparator non inverting input */
253 #define COMP_NONINVERTINGINPUT_400KPD           COMP_CSR_400KPD         /*!< Internal 400kOhm pull-down resistor connected to comparator non inverting input */
254
255 #define IS_COMP_NONINVERTINGINPUTPULL(INPUT) (((INPUT) == COMP_NONINVERTINGINPUT_NOPULL) || \
256                                               ((INPUT) == COMP_NONINVERTINGINPUT_10KPU)  || \
257                                               ((INPUT) == COMP_NONINVERTINGINPUT_10KPD)  || \
258                                               ((INPUT) == COMP_NONINVERTINGINPUT_400KPU) || \
259                                               ((INPUT) == COMP_NONINVERTINGINPUT_400KPD)   )
260 /**
261   * @}
262   */ 
263
264 /**
265   * @}
266   */ 
267
268
269 /* Exported macro ------------------------------------------------------------*/
270
271 /** @defgroup COMP_Exported_Macro COMP Exported Macro
272   * @{
273   */
274
275 /** @brief Reset COMP handle state
276   * @param  __HANDLE__: COMP handle.
277   * @retval None
278   */
279 #define __HAL_COMP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_COMP_STATE_RESET)
280
281 /**
282   * @brief Enables the specified comparator
283   * @param  __HANDLE__: COMP handle.
284   * @retval None.
285   */
286 #define __HAL_COMP_ENABLE(__HANDLE__)                                          \
287   ( ( ((__HANDLE__)->Instance == COMP1)                                        \
288     )?                                                                         \
289      SET_BIT(COMP->CSR, COMP_CSR_CMP1EN)                                       \
290      :                                                                         \
291      MODIFY_REG(COMP->CSR, COMP_CSR_INSEL, (__HANDLE__)->Init.InvertingInput ) \
292   )
293
294 /**
295   * @brief Disables the specified comparator
296   * @param  __HANDLE__: COMP handle.
297   * @retval None.
298   */
299 #define __HAL_COMP_DISABLE(__HANDLE__)                                         \
300   ( ( ((__HANDLE__)->Instance == COMP1)                                        \
301     )?                                                                         \
302      CLEAR_BIT(COMP->CSR, COMP_CSR_CMP1EN)                                     \
303      :                                                                         \
304      CLEAR_BIT(COMP->CSR, COMP_CSR_INSEL)                                      \
305   )
306     
307     
308 /** @brief  Checks whether the specified COMP flag is set or not.
309   * @param  __HANDLE__: specifies the COMP Handle.
310   * @param  __FLAG__: specifies the flag to check.
311   *        This parameter can be one of the following values:
312   *            @arg COMP_FLAG_LOCK:  lock flag
313   * @retval The new state of __FLAG__ (TRUE or FALSE).
314   */
315 #define __HAL_COMP_GET_FLAG(__HANDLE__, __FLAG__) (READ_BIT((__HANDLE__)->Instance->CSR, (__FLAG__)) == (__FLAG__))   
316
317
318 /**
319   * @brief Enable the Exti Line rising edge trigger.
320   * @param  __EXTILINE__: specifies the COMP Exti sources to be enabled.
321   *          This parameter can be a value of @ref COMP_ExtiLineEvent 
322   * @retval None.
323   */                                         
324 #define __HAL_COMP_EXTI_RISING_IT_ENABLE(__EXTILINE__) (SET_BIT(EXTI->RTSR, (__EXTILINE__)))
325
326 /**
327   * @brief  Disable the Exti Line rising edge trigger.
328   * @param  __EXTILINE__: specifies the COMP Exti sources to be disabled.
329   *         This parameter can be a value of @ref COMP_ExtiLineEvent 
330   * @retval None.
331   */                                         
332 #define __HAL_COMP_EXTI_RISING_IT_DISABLE(__EXTILINE__) (CLEAR_BIT(EXTI->RTSR, (__EXTILINE__)))
333
334 /**
335   * @brief Enable the Exti Line falling edge trigger.
336   * @param  __EXTILINE__: specifies the COMP Exti sources to be enabled.
337   *          This parameter can be a value of @ref COMP_ExtiLineEvent 
338   * @retval None.
339   */                                         
340 #define __HAL_COMP_EXTI_FALLING_IT_ENABLE(__EXTILINE__) (SET_BIT(EXTI->FTSR, (__EXTILINE__)))
341
342 /**
343   * @brief  Disable the Exti Line falling edge trigger.
344   * @param  __EXTILINE__: specifies the COMP Exti sources to be disabled.
345   *         This parameter can be a value of @ref COMP_ExtiLineEvent 
346   * @retval None.
347   */                                         
348 #define __HAL_COMP_EXTI_FALLING_IT_DISABLE(__EXTILINE__) (CLEAR_BIT(EXTI->FTSR, (__EXTILINE__)))
349
350 /**
351   * @brief  Get the specified EXTI line for a comparator instance
352   * @param  __INSTANCE__: specifies the COMP instance.
353   * @retval value of @ref COMP_ExtiLineEvent
354   */
355 #define __HAL_COMP_GET_EXTI_LINE(__INSTANCE__)                                 \
356   ( ( ((__INSTANCE__) == COMP1)                                                \
357     )?                                                                         \
358      (COMP_EXTI_LINE_COMP1_EVENT)                                              \
359      :                                                                         \
360      (COMP_EXTI_LINE_COMP2_EVENT)                                              \
361   )
362     
363 /**
364   * @brief Enable the COMP Exti Line.
365   * @param  __EXTILINE__: specifies the COMP Exti sources to be enabled.
366   *          This parameter can be a value of @ref COMP_ExtiLineEvent 
367   * @retval None.
368   */                                         
369 #define __HAL_COMP_EXTI_ENABLE_IT(__EXTILINE__) (SET_BIT(EXTI->IMR, (__EXTILINE__)))
370
371 /**
372   * @brief Disable the COMP Exti Line.
373   * @param  __EXTILINE__: specifies the COMP Exti sources to be disabled.
374   *          This parameter can be a value of @ref COMP_ExtiLineEvent 
375   * @retval None.
376   */
377 #define __HAL_COMP_EXTI_DISABLE_IT(__EXTILINE__) (CLEAR_BIT(EXTI->IMR, (__EXTILINE__)))
378
379 /**
380   * @brief  Checks whether the specified EXTI line flag is set or not.
381   * @param  __FLAG__: specifies the COMP Exti sources to be checked.
382   *          This parameter can be a value of @ref COMP_ExtiLineEvent 
383   * @retval The state of __FLAG__ (SET or RESET).
384   */
385 #define __HAL_COMP_EXTI_GET_FLAG(__FLAG__) (READ_BIT(EXTI->PR, (__FLAG__)))
386      
387 /**
388   * @brief Clear the COMP Exti flags.
389   * @param  __FLAG__: specifies the COMP Exti sources to be cleared.
390   *          This parameter can be a value of @ref COMP_ExtiLineEvent 
391   * @retval None.
392   */
393 #define __HAL_COMP_EXTI_CLEAR_FLAG(__FLAG__)   (EXTI->PR = (__FLAG__))
394
395 /**
396   * @brief  Generates a Software interrupt on selected EXTI line.
397   * @param  __EXTILINE__: specifies the COMP Exti sources to trig.
398   *          This parameter can be a value of @ref COMP_ExtiLineEvent 
399   * @retval None
400   */
401 #define __HAL_COMP_EXTI_GENERATE_SWIT(__EXTILINE__) (SET_BIT(EXTI->SWIER, (__EXTILINE__)))
402
403 /**
404   * @}
405   */ 
406     
407 /* Private macro -------------------------------------------------------------*/
408
409 /** @defgroup COMP_Private_Macro COMP Private Macro
410   * @{
411   */
412
413 /**
414   * @brief Select the COMP register CSR bit CMPxOUT corresponding to the 
415   * selected COMP instance.
416   * @param __HANDLE__: COMP handle
417   * @retval Comparator register CSR bit COMP_CSR_CMP1OUT or COMP_CSR_CMP2OUT
418   */
419 #define __COMP_CSR_CMPXOUT(__HANDLE__)                                         \
420   ( ( ((__HANDLE__)->Instance == COMP1)                                        \
421     )?                                                                         \
422      (COMP_CSR_CMP1OUT)                                                        \
423      :                                                                         \
424      (COMP_CSR_CMP2OUT)                                                        \
425   )
426
427 /**
428   * @brief Verification of COMP state: enabled or disabled
429   * @param __HANDLE__: COMP handle
430   * @retval SET (COMP enabled) or RESET (COMP disabled)
431   */
432 #define __COMP_IS_ENABLED(__HANDLE__)                                          \
433   ( ( ((__HANDLE__)->Instance == COMP1)                                        \
434     )?                                                                         \
435      (((READ_BIT(COMP->CSR , COMP_CSR_CMP1EN) == COMP_CSR_CMP1EN)              \
436       ) ? SET : RESET)                                                         \
437      :                                                                         \
438      (((READ_BIT(COMP->CSR , COMP_CSR_INSEL) != RESET)                         \
439       ) ? SET : RESET)                                                         \
440   )
441     
442 /**
443   * @}
444   */ 
445
446     
447 /* Include COMP HAL Extension module */
448 #include "stm32l1xx_hal_comp_ex.h"
449
450 /* Exported functions --------------------------------------------------------*/
451 /** @addtogroup COMP_Exported_Functions
452   * @{
453   */
454
455 /* Initialization and de-initialization functions  ******************************/
456 /** @addtogroup COMP_Exported_Functions_Group1
457   * @{
458   */
459 HAL_StatusTypeDef HAL_COMP_Init(COMP_HandleTypeDef *hcomp);
460 HAL_StatusTypeDef HAL_COMP_DeInit (COMP_HandleTypeDef *hcomp);
461 void HAL_COMP_MspInit(COMP_HandleTypeDef *hcomp);
462 void HAL_COMP_MspDeInit(COMP_HandleTypeDef *hcomp);
463 /**
464   * @}
465   */
466
467 /* I/O operation functions  *****************************************************/
468 /** @addtogroup COMP_Exported_Functions_Group2
469   * @{
470   */
471 HAL_StatusTypeDef HAL_COMP_Start(COMP_HandleTypeDef *hcomp);
472 HAL_StatusTypeDef HAL_COMP_Stop(COMP_HandleTypeDef *hcomp);
473 HAL_StatusTypeDef HAL_COMP_Start_IT(COMP_HandleTypeDef *hcomp);
474 HAL_StatusTypeDef HAL_COMP_Stop_IT(COMP_HandleTypeDef *hcomp);
475 void HAL_COMP_IRQHandler(COMP_HandleTypeDef *hcomp);
476 /**
477   * @}
478   */
479
480 /* Peripheral Control functions  ************************************************/
481 /** @addtogroup COMP_Exported_Functions_Group3
482   * @{
483   */
484 HAL_StatusTypeDef HAL_COMP_Lock(COMP_HandleTypeDef *hcomp);
485 uint32_t HAL_COMP_GetOutputLevel(COMP_HandleTypeDef *hcomp);
486
487 /* Callback in Interrupt mode */
488 void HAL_COMP_TriggerCallback(COMP_HandleTypeDef *hcomp);
489 /**
490   * @}
491   */
492
493 /* Peripheral State functions  **************************************************/
494 /** @addtogroup COMP_Exported_Functions_Group4
495   * @{
496   */
497 HAL_COMP_StateTypeDef HAL_COMP_GetState(COMP_HandleTypeDef *hcomp);
498 /**
499   * @}
500   */
501
502 /**
503   * @}
504   */
505
506 /**
507   * @}
508   */ 
509
510 /**
511   * @}
512   */ 
513
514 #ifdef __cplusplus
515 }
516 #endif
517
518 #endif /* __STM32L1xx_HAL_COMP_H */
519
520 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/