STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_comp.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_COMP_H
22 #define STM32L4xx_HAL_COMP_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 #include "stm32l4xx_ll_exti.h"
31 
35 #if defined (COMP1) || defined (COMP2)
36 
41 /* Exported types ------------------------------------------------------------*/
49 typedef struct
50 {
51 
52 #if defined(COMP2)
53  uint32_t WindowMode;
57 #endif /* COMP2 */
58 
59  uint32_t Mode;
64  uint32_t NonInvertingInput;
67  uint32_t InvertingInput;
70  uint32_t Hysteresis;
73  uint32_t OutputPol;
76  uint32_t BlankingSrce;
79  uint32_t TriggerMode;
83 
87 #define COMP_STATE_BITFIELD_LOCK (0x10U)
88 typedef enum
89 {
91  HAL_COMP_STATE_RESET_LOCKED = (HAL_COMP_STATE_RESET | COMP_STATE_BITFIELD_LOCK),
93  HAL_COMP_STATE_READY_LOCKED = (HAL_COMP_STATE_READY | COMP_STATE_BITFIELD_LOCK),
95  HAL_COMP_STATE_BUSY_LOCKED = (HAL_COMP_STATE_BUSY | COMP_STATE_BITFIELD_LOCK)
97 
101 #if (USE_HAL_COMP_REGISTER_CALLBACKS == 1)
102 typedef struct __COMP_HandleTypeDef
103 #else
104 typedef struct
105 #endif
106 {
107  COMP_TypeDef *Instance;
109  HAL_LockTypeDef Lock;
111  __IO uint32_t ErrorCode;
112 #if (USE_HAL_COMP_REGISTER_CALLBACKS == 1)
113  void (* TriggerCallback)(struct __COMP_HandleTypeDef *hcomp);
114  void (* MspInitCallback)(struct __COMP_HandleTypeDef *hcomp);
115  void (* MspDeInitCallback)(struct __COMP_HandleTypeDef *hcomp);
116 #endif /* USE_HAL_COMP_REGISTER_CALLBACKS */
118 
119 #if (USE_HAL_COMP_REGISTER_CALLBACKS == 1)
120 
123 typedef enum
124 {
129 
133 typedef void (*pCOMP_CallbackTypeDef)(COMP_HandleTypeDef *hcomp);
135 #endif /* USE_HAL_COMP_REGISTER_CALLBACKS */
136 
141 /* Exported constants --------------------------------------------------------*/
149 #define HAL_COMP_ERROR_NONE (0x00UL)
150 #if (USE_HAL_COMP_REGISTER_CALLBACKS == 1)
151 #define HAL_COMP_ERROR_INVALID_CALLBACK (0x01UL)
152 #endif /* USE_HAL_COMP_REGISTER_CALLBACKS */
153 
157 #if defined(COMP2)
158 
161 #define COMP_WINDOWMODE_DISABLE (0x00000000UL)
162 #define COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON (COMP_CSR_WINMODE)
166 #endif
167 
171 /* Note: For the characteristics of comparator power modes */
172 /* (propagation delay and power consumption), */
173 /* refer to device datasheet. */
174 #define COMP_POWERMODE_HIGHSPEED (0x00000000UL)
175 #define COMP_POWERMODE_MEDIUMSPEED (COMP_CSR_PWRMODE_0)
176 #define COMP_POWERMODE_ULTRALOWPOWER (COMP_CSR_PWRMODE)
184 #define COMP_INPUT_PLUS_IO1 (0x00000000UL)
185 #define COMP_INPUT_PLUS_IO2 (COMP_CSR_INPSEL_0)
186 #if defined(COMP_CSR_INPSEL_1)
187 #define COMP_INPUT_PLUS_IO3 (COMP_CSR_INPSEL_1)
188 #endif
189 
196 #define COMP_INPUT_MINUS_1_4VREFINT ( COMP_CSR_SCALEN | COMP_CSR_BRGEN)
197 #define COMP_INPUT_MINUS_1_2VREFINT ( COMP_CSR_INMSEL_0 | COMP_CSR_SCALEN | COMP_CSR_BRGEN)
198 #define COMP_INPUT_MINUS_3_4VREFINT ( COMP_CSR_INMSEL_1 | COMP_CSR_SCALEN | COMP_CSR_BRGEN)
199 #define COMP_INPUT_MINUS_VREFINT ( COMP_CSR_INMSEL_1 | COMP_CSR_INMSEL_0 | COMP_CSR_SCALEN )
200 #define COMP_INPUT_MINUS_DAC1_CH1 (COMP_CSR_INMSEL_2 )
201 #if defined(DAC_CHANNEL2_SUPPORT)
202 #define COMP_INPUT_MINUS_DAC1_CH2 (COMP_CSR_INMSEL_2 | COMP_CSR_INMSEL_0)
203 #endif
204 #define COMP_INPUT_MINUS_IO1 (COMP_CSR_INMSEL_2 | COMP_CSR_INMSEL_1 )
205 #define COMP_INPUT_MINUS_IO2 (COMP_CSR_INMSEL_2 | COMP_CSR_INMSEL_1 | COMP_CSR_INMSEL_0)
206 #if defined(COMP_CSR_INMESEL_1)
207 #define COMP_INPUT_MINUS_IO3 ( COMP_CSR_INMESEL_0 | COMP_CSR_INMSEL_2 | COMP_CSR_INMSEL_1 | COMP_CSR_INMSEL_0)
208 #define COMP_INPUT_MINUS_IO4 (COMP_CSR_INMESEL_1 | COMP_CSR_INMSEL_2 | COMP_CSR_INMSEL_1 | COMP_CSR_INMSEL_0)
209 #define COMP_INPUT_MINUS_IO5 (COMP_CSR_INMESEL_1 | COMP_CSR_INMESEL_0 | COMP_CSR_INMSEL_2 | COMP_CSR_INMSEL_1 | COMP_CSR_INMSEL_0)
210 #endif
211 
218 #define COMP_HYSTERESIS_NONE (0x00000000UL)
219 #define COMP_HYSTERESIS_LOW ( COMP_CSR_HYST_0)
220 #define COMP_HYSTERESIS_MEDIUM (COMP_CSR_HYST_1 )
221 #define COMP_HYSTERESIS_HIGH (COMP_CSR_HYST_1 | COMP_CSR_HYST_0)
229 #define COMP_OUTPUTPOL_NONINVERTED (0x00000000UL)
230 #define COMP_OUTPUTPOL_INVERTED (COMP_CSR_POLARITY)
238 #define COMP_BLANKINGSRC_NONE (0x00000000UL)
239 #define COMP_BLANKINGSRC_TIM1_OC5_COMP1 (COMP_CSR_BLANKING_0)
240 #define COMP_BLANKINGSRC_TIM2_OC3_COMP1 (COMP_CSR_BLANKING_1)
241 #define COMP_BLANKINGSRC_TIM3_OC3_COMP1 (COMP_CSR_BLANKING_2)
242 #define COMP_BLANKINGSRC_TIM3_OC4_COMP2 (COMP_CSR_BLANKING_0)
243 #define COMP_BLANKINGSRC_TIM8_OC5_COMP2 (COMP_CSR_BLANKING_1)
244 #define COMP_BLANKINGSRC_TIM15_OC1_COMP2 (COMP_CSR_BLANKING_2)
252 /* Note: Comparator output level values are fixed to "0" and "1", */
253 /* corresponding COMP register bit is managed by HAL function to match */
254 /* with these values (independently of bit position in register). */
255 
256 /* When output polarity is not inverted, comparator output is low when
257  the input plus is at a lower voltage than the input minus */
258 #define COMP_OUTPUT_LEVEL_LOW (0x00000000UL)
259 /* When output polarity is not inverted, comparator output is high when
260  the input plus is at a higher voltage than the input minus */
261 #define COMP_OUTPUT_LEVEL_HIGH (0x00000001UL)
262 
269 #define COMP_TRIGGERMODE_NONE (0x00000000UL)
270 #define COMP_TRIGGERMODE_IT_RISING (COMP_EXTI_IT | COMP_EXTI_RISING)
271 #define COMP_TRIGGERMODE_IT_FALLING (COMP_EXTI_IT | COMP_EXTI_FALLING)
272 #define COMP_TRIGGERMODE_IT_RISING_FALLING (COMP_EXTI_IT | COMP_EXTI_RISING | COMP_EXTI_FALLING)
273 #define COMP_TRIGGERMODE_EVENT_RISING (COMP_EXTI_EVENT | COMP_EXTI_RISING)
274 #define COMP_TRIGGERMODE_EVENT_FALLING (COMP_EXTI_EVENT | COMP_EXTI_FALLING)
275 #define COMP_TRIGGERMODE_EVENT_RISING_FALLING (COMP_EXTI_EVENT | COMP_EXTI_RISING | COMP_EXTI_FALLING)
284 /* Exported macro ------------------------------------------------------------*/
285 
297 #if (USE_HAL_COMP_REGISTER_CALLBACKS == 1)
298 #define __HAL_COMP_RESET_HANDLE_STATE(__HANDLE__) do{ \
299  (__HANDLE__)->State = HAL_COMP_STATE_RESET; \
300  (__HANDLE__)->MspInitCallback = NULL; \
301  (__HANDLE__)->MspDeInitCallback = NULL; \
302  } while(0)
303 #else
304 #define __HAL_COMP_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_COMP_STATE_RESET)
305 #endif
306 
312 #define COMP_CLEAR_ERRORCODE(__HANDLE__) ((__HANDLE__)->ErrorCode = HAL_COMP_ERROR_NONE)
313 
319 #define __HAL_COMP_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CSR, COMP_CSR_EN)
320 
326 #define __HAL_COMP_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CSR, COMP_CSR_EN)
327 
337 #define __HAL_COMP_LOCK(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CSR, COMP_CSR_LOCK)
338 
344 #define __HAL_COMP_IS_LOCKED(__HANDLE__) (READ_BIT((__HANDLE__)->Instance->CSR, COMP_CSR_LOCK) == COMP_CSR_LOCK)
345 
358 #define __HAL_COMP_COMP1_EXTI_ENABLE_RISING_EDGE() LL_EXTI_EnableRisingTrig_0_31(COMP_EXTI_LINE_COMP1)
359 
364 #define __HAL_COMP_COMP1_EXTI_DISABLE_RISING_EDGE() LL_EXTI_DisableRisingTrig_0_31(COMP_EXTI_LINE_COMP1)
365 
370 #define __HAL_COMP_COMP1_EXTI_ENABLE_FALLING_EDGE() LL_EXTI_EnableFallingTrig_0_31(COMP_EXTI_LINE_COMP1)
371 
376 #define __HAL_COMP_COMP1_EXTI_DISABLE_FALLING_EDGE() LL_EXTI_DisableFallingTrig_0_31(COMP_EXTI_LINE_COMP1)
377 
382 #define __HAL_COMP_COMP1_EXTI_ENABLE_RISING_FALLING_EDGE() do { \
383  LL_EXTI_EnableRisingTrig_0_31(COMP_EXTI_LINE_COMP1); \
384  LL_EXTI_EnableFallingTrig_0_31(COMP_EXTI_LINE_COMP1); \
385  } while(0)
386 
391 #define __HAL_COMP_COMP1_EXTI_DISABLE_RISING_FALLING_EDGE() do { \
392  LL_EXTI_DisableRisingTrig_0_31(COMP_EXTI_LINE_COMP1); \
393  LL_EXTI_DisableFallingTrig_0_31(COMP_EXTI_LINE_COMP1); \
394  } while(0)
395 
400 #define __HAL_COMP_COMP1_EXTI_ENABLE_IT() LL_EXTI_EnableIT_0_31(COMP_EXTI_LINE_COMP1)
401 
406 #define __HAL_COMP_COMP1_EXTI_DISABLE_IT() LL_EXTI_DisableIT_0_31(COMP_EXTI_LINE_COMP1)
407 
412 #define __HAL_COMP_COMP1_EXTI_GENERATE_SWIT() LL_EXTI_GenerateSWI_0_31(COMP_EXTI_LINE_COMP1)
413 
418 #define __HAL_COMP_COMP1_EXTI_ENABLE_EVENT() LL_EXTI_EnableEvent_0_31(COMP_EXTI_LINE_COMP1)
419 
424 #define __HAL_COMP_COMP1_EXTI_DISABLE_EVENT() LL_EXTI_DisableEvent_0_31(COMP_EXTI_LINE_COMP1)
425 
430 #define __HAL_COMP_COMP1_EXTI_GET_FLAG() LL_EXTI_IsActiveFlag_0_31(COMP_EXTI_LINE_COMP1)
431 
436 #define __HAL_COMP_COMP1_EXTI_CLEAR_FLAG() LL_EXTI_ClearFlag_0_31(COMP_EXTI_LINE_COMP1)
437 
438 #if defined(COMP2)
439 
443 #define __HAL_COMP_COMP2_EXTI_ENABLE_RISING_EDGE() LL_EXTI_EnableRisingTrig_0_31(COMP_EXTI_LINE_COMP2)
444 
449 #define __HAL_COMP_COMP2_EXTI_DISABLE_RISING_EDGE() LL_EXTI_DisableRisingTrig_0_31(COMP_EXTI_LINE_COMP2)
450 
455 #define __HAL_COMP_COMP2_EXTI_ENABLE_FALLING_EDGE() LL_EXTI_EnableFallingTrig_0_31(COMP_EXTI_LINE_COMP2)
456 
461 #define __HAL_COMP_COMP2_EXTI_DISABLE_FALLING_EDGE() LL_EXTI_DisableFallingTrig_0_31(COMP_EXTI_LINE_COMP2)
462 
467 #define __HAL_COMP_COMP2_EXTI_ENABLE_RISING_FALLING_EDGE() do { \
468  LL_EXTI_EnableRisingTrig_0_31(COMP_EXTI_LINE_COMP2); \
469  LL_EXTI_EnableFallingTrig_0_31(COMP_EXTI_LINE_COMP2); \
470  } while(0)
471 
476 #define __HAL_COMP_COMP2_EXTI_DISABLE_RISING_FALLING_EDGE() do { \
477  LL_EXTI_DisableRisingTrig_0_31(COMP_EXTI_LINE_COMP2); \
478  LL_EXTI_DisableFallingTrig_0_31(COMP_EXTI_LINE_COMP2); \
479  } while(0)
480 
485 #define __HAL_COMP_COMP2_EXTI_ENABLE_IT() LL_EXTI_EnableIT_0_31(COMP_EXTI_LINE_COMP2)
486 
491 #define __HAL_COMP_COMP2_EXTI_DISABLE_IT() LL_EXTI_DisableIT_0_31(COMP_EXTI_LINE_COMP2)
492 
497 #define __HAL_COMP_COMP2_EXTI_GENERATE_SWIT() LL_EXTI_GenerateSWI_0_31(COMP_EXTI_LINE_COMP2)
498 
503 #define __HAL_COMP_COMP2_EXTI_ENABLE_EVENT() LL_EXTI_EnableEvent_0_31(COMP_EXTI_LINE_COMP2)
504 
509 #define __HAL_COMP_COMP2_EXTI_DISABLE_EVENT() LL_EXTI_DisableEvent_0_31(COMP_EXTI_LINE_COMP2)
510 
515 #define __HAL_COMP_COMP2_EXTI_GET_FLAG() LL_EXTI_IsActiveFlag_0_31(COMP_EXTI_LINE_COMP2)
516 
521 #define __HAL_COMP_COMP2_EXTI_CLEAR_FLAG() LL_EXTI_ClearFlag_0_31(COMP_EXTI_LINE_COMP2)
522 
523 #endif /* COMP2 */
524 
533 /* Private types -------------------------------------------------------------*/
534 /* Private constants ---------------------------------------------------------*/
542 #define COMP_EXTI_LINE_COMP1 (LL_EXTI_LINE_21)
543 #if defined(COMP2)
544 #define COMP_EXTI_LINE_COMP2 (LL_EXTI_LINE_22)
545 #endif /* COMP2 */
546 
553 #define COMP_EXTI_IT (0x00000001UL)
554 #define COMP_EXTI_EVENT (0x00000002UL)
555 #define COMP_EXTI_RISING (0x00000010UL)
556 #define COMP_EXTI_FALLING (0x00000020UL)
565 /* Private macros ------------------------------------------------------------*/
566 
578 #if defined(COMP2)
579 #define COMP_GET_EXTI_LINE(__INSTANCE__) (((__INSTANCE__) == COMP1) ? COMP_EXTI_LINE_COMP1 \
580  : COMP_EXTI_LINE_COMP2)
581 #else
582 #define COMP_GET_EXTI_LINE(__INSTANCE__) COMP_EXTI_LINE_COMP1
583 #endif /* COMP2 */
584 
591 #if defined(COMP2)
592 #define IS_COMP_WINDOWMODE(__WINDOWMODE__) (((__WINDOWMODE__) == COMP_WINDOWMODE_DISABLE) || \
593  ((__WINDOWMODE__) == COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON) )
594 #endif
595 
596 #define IS_COMP_POWERMODE(__POWERMODE__) (((__POWERMODE__) == COMP_POWERMODE_HIGHSPEED) || \
597  ((__POWERMODE__) == COMP_POWERMODE_MEDIUMSPEED) || \
598  ((__POWERMODE__) == COMP_POWERMODE_ULTRALOWPOWER) )
599 
600 #if defined(COMP_CSR_INPSEL_1)
601 #define IS_COMP_INPUT_PLUS(__COMP_INSTANCE__, __INPUT_PLUS__) (((__INPUT_PLUS__) == COMP_INPUT_PLUS_IO1) || \
602  ((__INPUT_PLUS__) == COMP_INPUT_PLUS_IO2) || \
603  ((__INPUT_PLUS__) == COMP_INPUT_PLUS_IO3))
604 #else
605 #define IS_COMP_INPUT_PLUS(__COMP_INSTANCE__, __INPUT_PLUS__) (((__INPUT_PLUS__) == COMP_INPUT_PLUS_IO1) || \
606  ((__INPUT_PLUS__) == COMP_INPUT_PLUS_IO2))
607 #endif
608 
609 /* Note: On this STM32 serie, comparator input minus parameters are */
610 /* the same on all COMP instances. */
611 /* However, comparator instance kept as macro parameter for */
612 /* compatibility with other STM32 families. */
613 #if defined(COMP_CSR_INMESEL_1) && defined(DAC_CHANNEL2_SUPPORT)
614 #define IS_COMP_INPUT_MINUS(__COMP_INSTANCE__, __INPUT_MINUS__) (((__INPUT_MINUS__) == COMP_INPUT_MINUS_1_4VREFINT) || \
615  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_1_2VREFINT) || \
616  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_3_4VREFINT) || \
617  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_VREFINT) || \
618  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_DAC1_CH1) || \
619  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_DAC1_CH2) || \
620  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO1) || \
621  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO2) || \
622  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO3) || \
623  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO4) || \
624  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO5))
625 #elif defined(COMP_CSR_INMESEL_1)
626 #define IS_COMP_INPUT_MINUS(__COMP_INSTANCE__, __INPUT_MINUS__) (((__INPUT_MINUS__) == COMP_INPUT_MINUS_1_4VREFINT) || \
627  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_1_2VREFINT) || \
628  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_3_4VREFINT) || \
629  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_VREFINT) || \
630  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_DAC1_CH1) || \
631  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO1) || \
632  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO2) || \
633  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO3) || \
634  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO4) || \
635  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO5))
636 #elif defined(DAC_CHANNEL2_SUPPORT)
637 #define IS_COMP_INPUT_MINUS(__COMP_INSTANCE__, __INPUT_MINUS__) (((__INPUT_MINUS__) == COMP_INPUT_MINUS_1_4VREFINT) || \
638  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_1_2VREFINT) || \
639  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_3_4VREFINT) || \
640  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_VREFINT) || \
641  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_DAC1_CH1) || \
642  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_DAC1_CH2) || \
643  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO1) || \
644  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO2))
645 #else
646 #define IS_COMP_INPUT_MINUS(__COMP_INSTANCE__, __INPUT_MINUS__) (((__INPUT_MINUS__) == COMP_INPUT_MINUS_1_4VREFINT) || \
647  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_1_2VREFINT) || \
648  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_3_4VREFINT) || \
649  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_VREFINT) || \
650  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_DAC1_CH1) || \
651  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO1) || \
652  ((__INPUT_MINUS__) == COMP_INPUT_MINUS_IO2))
653 #endif
654 
655 #define IS_COMP_HYSTERESIS(__HYSTERESIS__) (((__HYSTERESIS__) == COMP_HYSTERESIS_NONE) || \
656  ((__HYSTERESIS__) == COMP_HYSTERESIS_LOW) || \
657  ((__HYSTERESIS__) == COMP_HYSTERESIS_MEDIUM) || \
658  ((__HYSTERESIS__) == COMP_HYSTERESIS_HIGH))
659 
660 #define IS_COMP_OUTPUTPOL(__POL__) (((__POL__) == COMP_OUTPUTPOL_NONINVERTED) || \
661  ((__POL__) == COMP_OUTPUTPOL_INVERTED))
662 
663 #if defined(COMP2)
664 #define IS_COMP_BLANKINGSRCE(__OUTPUT_BLANKING_SOURCE__) \
665  ( ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_NONE) \
666  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM1_OC5_COMP1) \
667  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM2_OC3_COMP1) \
668  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM3_OC3_COMP1) \
669  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM3_OC4_COMP2) \
670  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM8_OC5_COMP2) \
671  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM15_OC1_COMP2) \
672  )
673 #else
674 #if defined(TIM3)
675 #define IS_COMP_BLANKINGSRCE(__OUTPUT_BLANKING_SOURCE__) \
676  ( ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_NONE) \
677  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM1_OC5_COMP1) \
678  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM2_OC3_COMP1) \
679  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM3_OC3_COMP1) \
680  )
681 #else
682 #define IS_COMP_BLANKINGSRCE(__OUTPUT_BLANKING_SOURCE__) \
683  ( ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_NONE) \
684  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM1_OC5_COMP1) \
685  || ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM2_OC3_COMP1) \
686  )
687 #endif /* TIM3 */
688 #endif /* COMP2 */
689 
690 #if defined(COMP2)
691 #define IS_COMP_BLANKINGSRC_INSTANCE(__INSTANCE__, __OUTPUT_BLANKING_SOURCE__) \
692  ((((__INSTANCE__) == COMP1) && \
693  (((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_NONE) || \
694  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM1_OC5_COMP1) || \
695  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM2_OC3_COMP1) || \
696  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM3_OC3_COMP1))) \
697  || \
698  (((__INSTANCE__) == COMP2) && \
699  (((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_NONE) || \
700  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM3_OC4_COMP2) || \
701  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM8_OC5_COMP2) || \
702  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM15_OC1_COMP2))))
703 #else
704 #if defined(TIM3)
705  #define IS_COMP_BLANKINGSRC_INSTANCE(__INSTANCE__, __OUTPUT_BLANKING_SOURCE__) \
706  (((__INSTANCE__) == COMP1) && \
707  (((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_NONE) || \
708  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM1_OC5_COMP1) || \
709  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM2_OC3_COMP1) || \
710  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM3_OC3_COMP1)))
711 #else
712  #define IS_COMP_BLANKINGSRC_INSTANCE(__INSTANCE__, __OUTPUT_BLANKING_SOURCE__) \
713  (((__INSTANCE__) == COMP1) && \
714  (((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_NONE) || \
715  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM1_OC5_COMP1) || \
716  ((__OUTPUT_BLANKING_SOURCE__) == COMP_BLANKINGSRC_TIM2_OC3_COMP1) ))
717 #endif /* TIM3 */
718 #endif /* COMP2 */
719 
720 #define IS_COMP_TRIGGERMODE(__MODE__) (((__MODE__) == COMP_TRIGGERMODE_NONE) || \
721  ((__MODE__) == COMP_TRIGGERMODE_IT_RISING) || \
722  ((__MODE__) == COMP_TRIGGERMODE_IT_FALLING) || \
723  ((__MODE__) == COMP_TRIGGERMODE_IT_RISING_FALLING) || \
724  ((__MODE__) == COMP_TRIGGERMODE_EVENT_RISING) || \
725  ((__MODE__) == COMP_TRIGGERMODE_EVENT_FALLING) || \
726  ((__MODE__) == COMP_TRIGGERMODE_EVENT_RISING_FALLING))
727 
728 #define IS_COMP_OUTPUT_LEVEL(__OUTPUT_LEVEL__) (((__OUTPUT_LEVEL__) == COMP_OUTPUT_LEVEL_LOW) || \
729  ((__OUTPUT_LEVEL__) == COMP_OUTPUT_LEVEL_HIGH))
730 
740 /* Exported functions --------------------------------------------------------*/
749 /* Initialization and de-initialization functions **********************************/
750 HAL_StatusTypeDef HAL_COMP_Init(COMP_HandleTypeDef *hcomp);
751 HAL_StatusTypeDef HAL_COMP_DeInit(COMP_HandleTypeDef *hcomp);
754 
755 #if (USE_HAL_COMP_REGISTER_CALLBACKS == 1)
756 /* Callbacks Register/UnRegister functions ***********************************/
757 HAL_StatusTypeDef HAL_COMP_RegisterCallback(COMP_HandleTypeDef *hcomp, HAL_COMP_CallbackIDTypeDef CallbackID,
758  pCOMP_CallbackTypeDef pCallback);
759 HAL_StatusTypeDef HAL_COMP_UnRegisterCallback(COMP_HandleTypeDef *hcomp, HAL_COMP_CallbackIDTypeDef CallbackID);
760 #endif /* USE_HAL_COMP_REGISTER_CALLBACKS */
761 
765 /* IO operation functions *****************************************************/
769 HAL_StatusTypeDef HAL_COMP_Start(COMP_HandleTypeDef *hcomp);
770 HAL_StatusTypeDef HAL_COMP_Stop(COMP_HandleTypeDef *hcomp);
776 /* Peripheral Control functions ************************************************/
780 HAL_StatusTypeDef HAL_COMP_Lock(COMP_HandleTypeDef *hcomp);
782 /* Callback in interrupt mode */
788 /* Peripheral State functions **************************************************/
793 uint32_t HAL_COMP_GetError(COMP_HandleTypeDef *hcomp);
805 #endif /* COMP1 || COMP2 */
806 
810 #ifdef __cplusplus
811 }
812 #endif
813 
814 #endif /* STM32L4xx_HAL_COMP_H */
815 
816 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
HAL_StatusTypeDef HAL_COMP_Init(COMP_HandleTypeDef *hcomp)
Initialize the COMP according to the specified parameters in the COMP_InitTypeDef and initialize the ...
__IO HAL_COMP_StateTypeDef State
HAL_StatusTypeDef HAL_COMP_DeInit(COMP_HandleTypeDef *hcomp)
DeInitialize the COMP peripheral.
HAL_StatusTypeDef HAL_COMP_RegisterCallback(COMP_HandleTypeDef *hcomp, HAL_COMP_CallbackIDTypeDef CallbackID, pCOMP_CallbackTypeDef pCallback)
Register a User COMP Callback To be used instead of the weak predefined callback. ...
HAL_COMP_StateTypeDef HAL_COMP_GetState(COMP_HandleTypeDef *hcomp)
Return the COMP handle state.
HAL_StatusTypeDef HAL_COMP_Start(COMP_HandleTypeDef *hcomp)
Start the comparator.
COMP_InitTypeDef Init
COMP Init structure definition.
This file contains HAL common defines, enumeration, macros and structures definitions.
void HAL_COMP_MspDeInit(COMP_HandleTypeDef *hcomp)
DeInitialize the COMP MSP.
HAL_StatusTypeDef HAL_COMP_UnRegisterCallback(COMP_HandleTypeDef *hcomp, HAL_COMP_CallbackIDTypeDef CallbackID)
Unregister a COMP Callback COMP callback is redirected to the weak predefined callback.
void(* pCOMP_CallbackTypeDef)(COMP_HandleTypeDef *hcomp)
HAL COMP Callback pointer definition.
HAL_COMP_StateTypeDef
COMP_TypeDef * Instance
struct __COMP_HandleTypeDef else typedef struct endif COMP_HandleTypeDef
COMP Handle Structure definition.
void HAL_COMP_MspInit(COMP_HandleTypeDef *hcomp)
Initialize the COMP MSP.
uint32_t HAL_COMP_GetError(COMP_HandleTypeDef *hcomp)
Return the COMP error code.
HAL_LockTypeDef
HAL Lock structures definition.
void HAL_COMP_TriggerCallback(COMP_HandleTypeDef *hcomp)
Comparator trigger callback.
HAL_StatusTypeDef HAL_COMP_Lock(COMP_HandleTypeDef *hcomp)
Lock the selected comparator configuration.
HAL_StatusTypeDef HAL_COMP_Stop(COMP_HandleTypeDef *hcomp)
Stop the comparator.
ADC handle Structure definition.
Header file of EXTI LL module.
HAL_COMP_CallbackIDTypeDef
HAL COMP Callback ID enumeration definition.
void HAL_COMP_IRQHandler(COMP_HandleTypeDef *hcomp)
Comparator IRQ handler.
uint32_t HAL_COMP_GetOutputLevel(COMP_HandleTypeDef *hcomp)
Return the output level (high or low) of the selected comparator. The output level depends on the sel...