|
STM32G474xx HAL用户手册
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32g4xx_ll_comp.c 00004 * @author MCD Application Team 00005 * @brief COMP LL模块驱动程序 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * Copyright (c) 2019 STMicroelectronics. 00010 * All rights reserved. 00011 * 00012 * This software is licensed under terms that can be found in the LICENSE file 00013 * in the root directory of this software component. 00014 * If no LICENSE file comes with this software, it is provided AS-IS. 00015 * 00016 ****************************************************************************** 00017 */ 00018 00019 #if defined(USE_FULL_LL_DRIVER) 00020 00021 /* Includes ------------------------------------------------------------------*/ 00022 #include "stm32g4xx_ll_comp.h" 00023 00024 #ifdef USE_FULL_ASSERT 00025 #include "stm32_assert.h" 00026 #else 00027 #define assert_param(expr) ((void)0U) 00028 #endif /* USE_FULL_ASSERT */ 00029 00030 /** @addtogroup STM32G4xx_LL_Driver 00031 * @{ 00032 */ 00033 00034 00035 00036 /** @addtogroup COMP_LL COMP 00037 * @{ 00038 */ 00039 00040 /* Private types -------------------------------------------------------------*/ 00041 /* Private variables ---------------------------------------------------------*/ 00042 /* Private constants ---------------------------------------------------------*/ 00043 /* Private macros ------------------------------------------------------------*/ 00044 00045 /** @addtogroup COMP_LL_Private_Macros 00046 * @{ 00047 */ 00048 00049 /* Check of parameters for configuration of COMP hierarchical scope: */ 00050 /* COMP instance. */ 00051 00052 /* Note: On this STM32 series, comparator input plus parameters are */ 00053 /* the same on all COMP instances. */ 00054 /* However, comparator instance kept as macro parameter for */ 00055 /* compatibility with other STM32 series. */ 00056 #define IS_LL_COMP_INPUT_PLUS(__COMP_INSTANCE__, __INPUT_PLUS__) \ 00057 (((__INPUT_PLUS__) == LL_COMP_INPUT_PLUS_IO1) \ 00058 || ((__INPUT_PLUS__) == LL_COMP_INPUT_PLUS_IO2) \ 00059 ) 00060 #if defined(STM32G414xx) || defined(STM32G474xx) || defined(STM32G484xx) || defined(STM32G473xx) || defined(STM32G483xx) 00061 #define IS_LL_COMP_INPUT_MINUS(__COMP_INSTANCE__, __INPUT_MINUS__) \ 00062 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_1_4VREFINT) || \ 00063 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_1_2VREFINT) || \ 00064 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_3_4VREFINT) || \ 00065 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_VREFINT) || \ 00066 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_IO1) || \ 00067 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_IO2) || \ 00068 (((__COMP_INSTANCE__) == COMP1) && \ 00069 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH1) || \ 00070 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH1)) \ 00071 ) || \ 00072 (((__COMP_INSTANCE__) == COMP2) && \ 00073 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH2) || \ 00074 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH2)) \ 00075 ) || \ 00076 (((__COMP_INSTANCE__) == COMP3) && \ 00077 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH1) || \ 00078 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH1)) \ 00079 ) || \ 00080 (((__COMP_INSTANCE__) == COMP4) && \ 00081 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH1) || \ 00082 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH2)) \ 00083 ) || \ 00084 (((__COMP_INSTANCE__) == COMP5) && \ 00085 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH2) || \ 00086 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC4_CH1)) \ 00087 ) || \ 00088 (((__COMP_INSTANCE__) == COMP6) && \ 00089 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC2_CH1) || \ 00090 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC4_CH2)) \ 00091 ) || \ 00092 (((__COMP_INSTANCE__) == COMP7) && \ 00093 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC2_CH1) || \ 00094 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC4_CH1)) \ 00095 )) 00096 #elif defined(STM32GBK1CB) || defined(STM32G431xx) || defined(STM32G441xx) || defined(STM32G471xx) || defined(STM32G491xx) || defined(STM32G4A1xx) 00097 #define IS_LL_COMP_INPUT_MINUS(__COMP_INSTANCE__, __INPUT_MINUS__) \ 00098 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_1_4VREFINT) || \ 00099 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_1_2VREFINT) || \ 00100 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_3_4VREFINT) || \ 00101 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_VREFINT) || \ 00102 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_IO1) || \ 00103 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_IO2) || \ 00104 (((__COMP_INSTANCE__) == COMP1) && \ 00105 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH1) || \ 00106 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH1)) \ 00107 ) || \ 00108 (((__COMP_INSTANCE__) == COMP2) && \ 00109 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH2) || \ 00110 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH2)) \ 00111 ) || \ 00112 (((__COMP_INSTANCE__) == COMP3) && \ 00113 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH1) || \ 00114 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH1)) \ 00115 ) || \ 00116 (((__COMP_INSTANCE__) == COMP4) && \ 00117 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH1) || \ 00118 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH2)) \ 00119 )) 00120 #elif defined(STM32G411xB) || defined(STM32G411xC) 00121 #define IS_LL_COMP_INPUT_MINUS(__COMP_INSTANCE__, __INPUT_MINUS__) \ 00122 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_1_4VREFINT) || \ 00123 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_1_2VREFINT) || \ 00124 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_3_4VREFINT) || \ 00125 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_VREFINT) || \ 00126 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_IO1) || \ 00127 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_IO2) || \ 00128 (((__COMP_INSTANCE__) == COMP1) && \ 00129 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH1) || \ 00130 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH1)) \ 00131 ) || \ 00132 (((__COMP_INSTANCE__) == COMP2) && \ 00133 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH2) || \ 00134 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH2)) \ 00135 ) || \ 00136 (((__COMP_INSTANCE__) == COMP3) && \ 00137 (((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC1_CH1) || \ 00138 ((__INPUT_MINUS__) == LL_COMP_INPUT_MINUS_DAC3_CH1)) \ 00139 )) 00140 #endif 00141 00142 #define IS_LL_COMP_INPUT_HYSTERESIS(__INPUT_HYSTERESIS__) \ 00143 (((__INPUT_HYSTERESIS__) == LL_COMP_HYSTERESIS_NONE) \ 00144 || ((__INPUT_HYSTERESIS__) == LL_COMP_HYSTERESIS_10MV) \ 00145 || ((__INPUT_HYSTERESIS__) == LL_COMP_HYSTERESIS_20MV) \ 00146 || ((__INPUT_HYSTERESIS__) == LL_COMP_HYSTERESIS_30MV) \ 00147 || ((__INPUT_HYSTERESIS__) == LL_COMP_HYSTERESIS_40MV) \ 00148 || ((__INPUT_HYSTERESIS__) == LL_COMP_HYSTERESIS_50MV) \ 00149 || ((__INPUT_HYSTERESIS__) == LL_COMP_HYSTERESIS_60MV) \ 00150 || ((__INPUT_HYSTERESIS__) == LL_COMP_HYSTERESIS_70MV) \ 00151 ) 00152 00153 #define IS_LL_COMP_OUTPUT_POLARITY(__POLARITY__) \ 00154 (((__POLARITY__) == LL_COMP_OUTPUTPOL_NONINVERTED) \ 00155 || ((__POLARITY__) == LL_COMP_OUTPUTPOL_INVERTED) \ 00156 ) 00157 00158 #if defined(STM32G414xx) || defined(STM32G474xx) || defined(STM32G484xx) || defined(STM32G473xx) || defined(STM32G483xx) 00159 #define IS_LL_COMP_OUTPUT_BLANKING_SOURCE(__INSTANCE__, __OUTPUT_BLANKING_SOURCE__) \ 00160 ((((__INSTANCE__) == COMP1) && \ 00161 (((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_NONE) || \ 00162 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM1_OC5_COMP1) || \ 00163 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM2_OC3_COMP1) || \ 00164 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM3_OC3_COMP1) || \ 00165 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM8_OC5_COMP1))) \ 00166 || \ 00167 (((__INSTANCE__) == COMP2) && \ 00168 (((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_NONE) || \ 00169 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM1_OC5_COMP2) || \ 00170 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM2_OC3_COMP2) || \ 00171 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM3_OC3_COMP2) || \ 00172 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM8_OC5_COMP2))) \ 00173 || \ 00174 (((__INSTANCE__) == COMP3) && \ 00175 (((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_NONE) || \ 00176 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM1_OC5_COMP3) || \ 00177 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM2_OC4_COMP3) || \ 00178 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM3_OC3_COMP3) || \ 00179 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM8_OC5_COMP3))) \ 00180 || \ 00181 (((__INSTANCE__) == COMP4) && \ 00182 (((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_NONE) || \ 00183 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM1_OC5_COMP4) || \ 00184 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM3_OC4_COMP4) || \ 00185 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM8_OC5_COMP4) || \ 00186 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM15_OC1_COMP4))) \ 00187 || \ 00188 (((__INSTANCE__) == COMP5) && \ 00189 (((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_NONE) || \ 00190 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM1_OC5_COMP5) || \ 00191 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM2_OC3_COMP5) || \ 00192 ((__OUTPUT_BLANKING_SOURCE__) == LL_COMP_BLANKINGSRC_TIM