فهرست منبع

Add GPIO input and output disable option

kooho 8 سال پیش
والد
کامیت
ada33fe3dd
2فایلهای تغییر یافته به همراه4 افزوده شده و 1 حذف شده
  1. 1 1
      components/driver/gpio.c
  2. 3 0
      components/driver/include/driver/gpio.h

+ 1 - 1
components/driver/gpio.c

@@ -245,7 +245,7 @@ esp_err_t gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull)
 esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode)
 {
     GPIO_CHECK(GPIO_IS_VALID_GPIO(gpio_num), "GPIO number error", ESP_ERR_INVALID_ARG);
-    if (gpio_num >= 34 && (mode & (GPIO_MODE_DEF_OUTPUT))) {
+    if (gpio_num >= 34 && (mode & GPIO_MODE_DEF_OUTPUT)) {
         ESP_LOGE(GPIO_TAG, "io_num=%d can only be input", gpio_num);
         return ESP_ERR_INVALID_ARG;
     }

+ 3 - 0
components/driver/include/driver/gpio.h

@@ -115,10 +115,12 @@ extern "C" {
 #define GPIO_PRO_CPU_NMI_INTR_ENA  (BIT(3))
 #define GPIO_SDIO_EXT_INTR_ENA     (BIT(4))
 
+#define GPIO_MODE_DEF_DISABLE         (0)
 #define GPIO_MODE_DEF_INPUT           (BIT0)
 #define GPIO_MODE_DEF_OUTPUT          (BIT1)
 #define GPIO_MODE_DEF_OD              (BIT2)
 
+
 #define GPIO_PIN_COUNT              40
 /** @endcond */
 
@@ -184,6 +186,7 @@ typedef enum {
 } gpio_int_type_t;
 
 typedef enum {
+    GPIO_MODE_DISABLE = GPIO_MODE_DEF_DISABLE,                                        /*!< GPIO mode : disable input and output             */
     GPIO_MODE_INPUT = GPIO_MODE_DEF_INPUT,                                                         /*!< GPIO mode : input only                           */
     GPIO_MODE_OUTPUT = GPIO_MODE_DEF_OUTPUT,                                                       /*!< GPIO mode : output only mode                     */
     GPIO_MODE_OUTPUT_OD = ((GPIO_MODE_DEF_OUTPUT)|(GPIO_MODE_DEF_OD)),                             /*!< GPIO mode : output only with open-drain mode     */