Browse Source

[BSP][stm32] fix the compile error

Zxy 2 years ago
parent
commit
c9f7f0e771
1 changed files with 41 additions and 14 deletions
  1. 41 14
      bsp/stm32/libraries/HAL_Drivers/drv_adc.c

+ 41 - 14
bsp/stm32/libraries/HAL_Drivers/drv_adc.c

@@ -67,23 +67,44 @@ static rt_err_t stm32_adc_enabled(struct rt_adc_device *device, rt_uint32_t chan
 
 
 /* ADC channel number is up to 17 */
 /* ADC channel number is up to 17 */
 #if !defined(ADC_CHANNEL_18)
 #if !defined(ADC_CHANNEL_18)
-        if (channel <= 17 || \
-           (channel != (ADC_CHANNEL_VREFINT    - ADC_CHANNEL_0) || \
-            channel != (ADC_CHANNEL_TEMPSENSOR - ADC_CHANNEL_0) || \
-            channel != (ADC_CHANNEL_VBAT       - ADC_CHANNEL_0)))
+        if (channel <= 17 || (
+#ifdef ADC_CHANNEL_VREFINT
+               channel != (ADC_CHANNEL_VREFINT - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_VREFINT */
+#ifdef ADC_CHANNEL_TEMPSENSOR
+           ||  channel != (ADC_CHANNEL_TEMPSENSOR - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_TEMPSENSOR */
+#ifdef ADC_CHANNEL_VBAT
+           ||  channel != (ADC_CHANNEL_VBAT - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_VBAT */
+))
 /* ADC channel number is up to 19 */
 /* ADC channel number is up to 19 */
 #elif defined(ADC_CHANNEL_19)
 #elif defined(ADC_CHANNEL_19)
-        if (channel <= 19 || \
-           (channel != (ADC_CHANNEL_VREFINT    - ADC_CHANNEL_0) || \
-            channel != (ADC_CHANNEL_TEMPSENSOR - ADC_CHANNEL_0) || \
-            channel != (ADC_CHANNEL_VBAT       - ADC_CHANNEL_0)))
+        if (channel <= 19 || (
+#ifdef ADC_CHANNEL_VREFINT
+               channel != (ADC_CHANNEL_VREFINT - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_VREFINT */
+#ifndef ADC_CHANNEL_TEMPSENSOR
+            || channel != (ADC_CHANNEL_TEMPSENSOR - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_TEMPSENSOR */
+#ifdef ADC_CHANNEL_VBAT
+            || channel != (=ADC_CHANNEL_VBAT - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_VBAT */
+))
 /* ADC channel number is up to 18 */
 /* ADC channel number is up to 18 */
 #else
 #else
-        if (channel <= 18 || \
-           (channel != (ADC_CHANNEL_VREFINT    - ADC_CHANNEL_0) || \
-            channel != (ADC_CHANNEL_TEMPSENSOR - ADC_CHANNEL_0) || \
-            channel != (ADC_CHANNEL_VBAT       - ADC_CHANNEL_0)))
-#endif
+        if (channel <= 18 || (
+#ifdef ADC_CHANNEL_VREFINT
+               channel != (ADC_CHANNEL_VREFINT - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_VREFINT */
+#ifdef ADC_CHANNEL_TEMPSENSOR
+            || channel != (ADC_CHANNEL_TEMPSENSOR - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_TEMPSENSOR */
+#ifdef ADC_CHANNEL_VBAT
+            || channel != (ADC_CHANNEL_VBAT - ADC_CHANNEL_0)
+#endif /* ADC_CHANNEL_VBAT */
+))
+#endif /* !defined(ADC_CHANNEL_18) */
         {
         {
             /* set stm32 ADC channel */
             /* set stm32 ADC channel */
             ADC_ChanConf.Channel =  stm32_adc_get_channel(channel);
             ADC_ChanConf.Channel =  stm32_adc_get_channel(channel);
@@ -96,7 +117,7 @@ static rt_err_t stm32_adc_enabled(struct rt_adc_device *device, rt_uint32_t chan
             LOG_E("ADC channel must be between 0 and 19.");
             LOG_E("ADC channel must be between 0 and 19.");
 #else
 #else
             LOG_E("ADC channel must be between 0 and 18.");
             LOG_E("ADC channel must be between 0 and 18.");
-#endif
+#endif /* !defined(ADC_CHANNEL_18) */
             return -RT_ERROR;
             return -RT_ERROR;
         }
         }
 
 
@@ -273,15 +294,21 @@ static rt_uint32_t stm32_adc_get_channel(rt_uint32_t channel)
     default:
     default:
         switch (channel)
         switch (channel)
         {
         {
+#ifdef ADC_CHANNEL_VREFINT
           case ADC_CHANNEL_VREFINT - ADC_CHANNEL_0:
           case ADC_CHANNEL_VREFINT - ADC_CHANNEL_0:
             stm32_channel = ADC_CHANNEL_VREFINT;
             stm32_channel = ADC_CHANNEL_VREFINT;
             break;
             break;
+#endif /* ADC_CHANNEL_VREFINT */
+#ifdef ADC_CHANNEL_VBAT
           case ADC_CHANNEL_VBAT - ADC_CHANNEL_0:
           case ADC_CHANNEL_VBAT - ADC_CHANNEL_0:
             stm32_channel = ADC_CHANNEL_VBAT;
             stm32_channel = ADC_CHANNEL_VBAT;
             break;
             break;
+#endif /* ADC_CHANNEL_VBAT */
+#ifdef ADC_CHANNEL_TEMPSENSOR
           case ADC_CHANNEL_TEMPSENSOR - ADC_CHANNEL_0:
           case ADC_CHANNEL_TEMPSENSOR - ADC_CHANNEL_0:
             stm32_channel = ADC_CHANNEL_TEMPSENSOR;
             stm32_channel = ADC_CHANNEL_TEMPSENSOR;
             break;
             break;
+#endif /* ADC_CHANNEL_TEMPSENSOR */
         }
         }
         break;
         break;
     }
     }