Просмотр исходного кода

adc: fixed the issue adc_gpio_init doesn't support ADC_UNIT_BOTH

Michael (XIAO Xufeng) 5 лет назад
Родитель
Сommit
a2aa349dcc
1 измененных файлов с 10 добавлено и 4 удалено
  1. 10 4
      components/driver/adc_common.c

+ 10 - 4
components/driver/adc_common.c

@@ -215,18 +215,24 @@ static void adc_rtc_chan_init(adc_unit_t adc_unit)
 esp_err_t adc_gpio_init(adc_unit_t adc_unit, adc_channel_t channel)
 {
     gpio_num_t gpio_num = 0;
+    //If called with `ADC_UNIT_BOTH (ADC_UNIT_1 | ADC_UNIT_2)`, both if blocks will be run
     if (adc_unit & ADC_UNIT_1) {
         ADC_CHANNEL_CHECK(ADC_NUM_1, channel);
         gpio_num = ADC_GET_IO_NUM(ADC_NUM_1, channel);
+        ADC_CHECK_RET(rtc_gpio_init(gpio_num));
+        ADC_CHECK_RET(rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED));
+        ADC_CHECK_RET(rtc_gpio_pulldown_dis(gpio_num));
+        ADC_CHECK_RET(rtc_gpio_pullup_dis(gpio_num));
     }
     if (adc_unit & ADC_UNIT_2) {
         ADC_CHANNEL_CHECK(ADC_NUM_2, channel);
         gpio_num = ADC_GET_IO_NUM(ADC_NUM_2, channel);
+        ADC_CHECK_RET(rtc_gpio_init(gpio_num));
+        ADC_CHECK_RET(rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED));
+        ADC_CHECK_RET(rtc_gpio_pulldown_dis(gpio_num));
+        ADC_CHECK_RET(rtc_gpio_pullup_dis(gpio_num));
     }
-    ADC_CHECK_RET(rtc_gpio_init(gpio_num));
-    ADC_CHECK_RET(rtc_gpio_set_direction(gpio_num, RTC_GPIO_MODE_DISABLED));
-    ADC_CHECK_RET(rtc_gpio_pulldown_dis(gpio_num));
-    ADC_CHECK_RET(rtc_gpio_pullup_dis(gpio_num));
+
     return ESP_OK;
 }