GPIO

Overview

Instructions

Application Example

Instructions

API Reference

Instructions

Macros

GPIO_SEL_0 (BIT(0))

Pin 0 selected

GPIO_SEL_1 (BIT(1))

Pin 1 selected

GPIO_SEL_2 (BIT(2))

Pin 2 selected

GPIO_SEL_3 (BIT(3))

Pin 3 selected

GPIO_SEL_4 (BIT(4))

Pin 4 selected

GPIO_SEL_5 (BIT(5))

Pin 5 selected

GPIO_SEL_6 (BIT(6))

Pin 6 selected

GPIO_SEL_7 (BIT(7))

Pin 7 selected

GPIO_SEL_8 (BIT(8))

Pin 8 selected

GPIO_SEL_9 (BIT(9))

Pin 9 selected

GPIO_SEL_10 (BIT(10))

Pin 10 selected

GPIO_SEL_11 (BIT(11))

Pin 11 selected

GPIO_SEL_12 (BIT(12))

Pin 12 selected

GPIO_SEL_13 (BIT(13))

Pin 13 selected

GPIO_SEL_14 (BIT(14))

Pin 14 selected

GPIO_SEL_15 (BIT(15))

Pin 15 selected

GPIO_SEL_16 (BIT(16))

Pin 16 selected

GPIO_SEL_17 (BIT(17))

Pin 17 selected

GPIO_SEL_18 (BIT(18))

Pin 18 selected

GPIO_SEL_19 (BIT(19))

Pin 19 selected

GPIO_SEL_21 (BIT(21))

Pin 21 selected

GPIO_SEL_22 (BIT(22))

Pin 22 selected

GPIO_SEL_23 (BIT(23))

Pin 23 selected

GPIO_SEL_25 (BIT(25))

Pin 25 selected

GPIO_SEL_26 (BIT(26))

Pin 26 selected

GPIO_SEL_27 (BIT(27))

Pin 27 selected

GPIO_SEL_32 ((uint64_t)(((uint64_t)1)<<32))

Pin 32 selected

GPIO_SEL_33 ((uint64_t)(((uint64_t)1)<<33))

Pin 33 selected

GPIO_SEL_34 ((uint64_t)(((uint64_t)1)<<34))

Pin 34 selected

GPIO_SEL_35 ((uint64_t)(((uint64_t)1)<<35))

Pin 35 selected

GPIO_SEL_36 ((uint64_t)(((uint64_t)1)<<36))

Pin 36 selected

GPIO_SEL_37 ((uint64_t)(((uint64_t)1)<<37))

Pin 37 selected

GPIO_SEL_38 ((uint64_t)(((uint64_t)1)<<38))

Pin 38 selected

GPIO_SEL_39 ((uint64_t)(((uint64_t)1)<<39))

Pin 39 selected

GPIO_PIN_REG_0 PERIPHS_IO_MUX_GPIO0_U
GPIO_PIN_REG_1 PERIPHS_IO_MUX_U0TXD_U
GPIO_PIN_REG_2 PERIPHS_IO_MUX_GPIO2_U
GPIO_PIN_REG_3 PERIPHS_IO_MUX_U0RXD_U
GPIO_PIN_REG_4 PERIPHS_IO_MUX_GPIO4_U
GPIO_PIN_REG_5 PERIPHS_IO_MUX_GPIO5_U
GPIO_PIN_REG_6 PERIPHS_IO_MUX_SD_CLK_U
GPIO_PIN_REG_7 PERIPHS_IO_MUX_SD_DATA0_U
GPIO_PIN_REG_8 PERIPHS_IO_MUX_SD_DATA1_U
GPIO_PIN_REG_9 PERIPHS_IO_MUX_SD_DATA2_U
GPIO_PIN_REG_10 PERIPHS_IO_MUX_SD_DATA3_U
GPIO_PIN_REG_11 PERIPHS_IO_MUX_SD_CMD_U
GPIO_PIN_REG_12 PERIPHS_IO_MUX_MTDI_U
GPIO_PIN_REG_13 PERIPHS_IO_MUX_MTCK_U
GPIO_PIN_REG_14 PERIPHS_IO_MUX_MTMS_U
GPIO_PIN_REG_15 PERIPHS_IO_MUX_MTDO_U
GPIO_PIN_REG_16 PERIPHS_IO_MUX_GPIO16_U
GPIO_PIN_REG_17 PERIPHS_IO_MUX_GPIO17_U
GPIO_PIN_REG_18 PERIPHS_IO_MUX_GPIO18_U
GPIO_PIN_REG_19 PERIPHS_IO_MUX_GPIO19_U
GPIO_PIN_REG_20 PERIPHS_IO_MUX_GPIO20_U
GPIO_PIN_REG_21 PERIPHS_IO_MUX_GPIO21_U
GPIO_PIN_REG_22 PERIPHS_IO_MUX_GPIO22_U
GPIO_PIN_REG_23 PERIPHS_IO_MUX_GPIO23_U
GPIO_PIN_REG_25 PERIPHS_IO_MUX_GPIO25_U
GPIO_PIN_REG_26 PERIPHS_IO_MUX_GPIO26_U
GPIO_PIN_REG_27 PERIPHS_IO_MUX_GPIO27_U
GPIO_PIN_REG_32 PERIPHS_IO_MUX_GPIO32_U
GPIO_PIN_REG_33 PERIPHS_IO_MUX_GPIO33_U
GPIO_PIN_REG_34 PERIPHS_IO_MUX_GPIO34_U
GPIO_PIN_REG_35 PERIPHS_IO_MUX_GPIO35_U
GPIO_PIN_REG_36 PERIPHS_IO_MUX_GPIO36_U
GPIO_PIN_REG_37 PERIPHS_IO_MUX_GPIO37_U
GPIO_PIN_REG_38 PERIPHS_IO_MUX_GPIO38_U
GPIO_PIN_REG_39 PERIPHS_IO_MUX_GPIO39_U
GPIO_APP_CPU_INTR_ENA (BIT(0))
GPIO_APP_CPU_NMI_INTR_ENA (BIT(1))
GPIO_PRO_CPU_INTR_ENA (BIT(2))
GPIO_PRO_CPU_NMI_INTR_ENA (BIT(3))
GPIO_SDIO_EXT_INTR_ENA (BIT(4))
GPIO_MODE_DEF_INPUT (BIT0)
GPIO_MODE_DEF_OUTPUT (BIT1)
GPIO_MODE_DEF_OD (BIT2)
GPIO_PIN_COUNT 40
GPIO_IS_VALID_GPIO(gpio_num) ((gpio_num < GPIO_PIN_COUNT && GPIO_PIN_MUX_REG[gpio_num] != 0))
GPIO_IS_VALID_OUTPUT_GPIO(gpio_num) ((GPIO_IS_VALID_GPIO(gpio_num)) && (gpio_num < 34))

Type Definitions

typedef void (*gpio_event_callback)(gpio_num_t gpio_intr_num)

Enumerations

enum gpio_num_t

Values:

GPIO_NUM_0 = 0

GPIO0, input and output

GPIO_NUM_1 = 1

GPIO1, input and output

GPIO_NUM_2 = 2

GPIO2, input and output

GPIO_NUM_3 = 3

GPIO3, input and output

GPIO_NUM_4 = 4

GPIO4, input and output

GPIO_NUM_5 = 5

GPIO5, input and output

GPIO_NUM_6 = 6

GPIO6, input and output

GPIO_NUM_7 = 7

GPIO7, input and output

GPIO_NUM_8 = 8

GPIO8, input and output

GPIO_NUM_9 = 9

GPIO9, input and output

GPIO_NUM_10 = 10

GPIO10, input and output

GPIO_NUM_11 = 11

GPIO11, input and output

GPIO_NUM_12 = 12

GPIO12, input and output

GPIO_NUM_13 = 13

GPIO13, input and output

GPIO_NUM_14 = 14

GPIO14, input and output

GPIO_NUM_15 = 15

GPIO15, input and output

GPIO_NUM_16 = 16

GPIO16, input and output

GPIO_NUM_17 = 17

GPIO17, input and output

GPIO_NUM_18 = 18

GPIO18, input and output

GPIO_NUM_19 = 19

GPIO19, input and output

GPIO_NUM_21 = 21

GPIO21, input and output

GPIO_NUM_22 = 22

GPIO22, input and output

GPIO_NUM_23 = 23

GPIO23, input and output

GPIO_NUM_25 = 25

GPIO25, input and output

GPIO_NUM_26 = 26

GPIO26, input and output

GPIO_NUM_27 = 27

GPIO27, input and output

GPIO_NUM_32 = 32

GPIO32, input and output

GPIO_NUM_33 = 33

GPIO32, input and output

GPIO_NUM_34 = 34

GPIO34, input mode only

GPIO_NUM_35 = 35

GPIO35, input mode only

GPIO_NUM_36 = 36

GPIO36, input mode only

GPIO_NUM_37 = 37

GPIO37, input mode only

GPIO_NUM_38 = 38

GPIO38, input mode only

GPIO_NUM_39 = 39

GPIO39, input mode only

enum gpio_int_type_t

Values:

GPIO_INTR_DISABLE = 0

Disable GPIO interrupt

GPIO_INTR_POSEDGE = 1

GPIO interrupt type : rising edge

GPIO_INTR_NEGEDGE = 2

GPIO interrupt type : falling edge

GPIO_INTR_ANYEDGE = 3

GPIO interrupt type : both rising and falling edge

GPIO_INTR_LOW_LEVEL = 4

GPIO interrupt type : input low level trigger

GPIO_INTR_HIGH_LEVEL = 5

GPIO interrupt type : input high level trigger

GPIO_INTR_MAX
enum gpio_mode_t

Values:

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

GPIO_MODE_INPUT_OUTPUT_OD = ((GPIO_MODE_DEF_INPUT)|(GPIO_MODE_DEF_OUTPUT)|(GPIO_MODE_DEF_OD))

GPIO mode : output and input with open-drain mode

GPIO_MODE_INPUT_OUTPUT = ((GPIO_MODE_DEF_INPUT)|(GPIO_MODE_DEF_OUTPUT))

GPIO mode : output and input mode

enum gpio_pullup_t

Values:

GPIO_PULLUP_DISABLE = 0x0

Disable GPIO pull-up resistor

GPIO_PULLUP_ENABLE = 0x1

Enable GPIO pull-up resistor

enum gpio_pulldown_t

Values:

GPIO_PULLDOWN_DISABLE = 0x0

Disable GPIO pull-down resistor

GPIO_PULLDOWN_ENABLE = 0x1

Enable GPIO pull-down resistor

enum gpio_pull_mode_t

Values:

GPIO_PULLUP_ONLY

Pad pull up

GPIO_PULLDOWN_ONLY

Pad pull down

GPIO_PULLUP_PULLDOWN

Pad pull up + pull down

GPIO_FLOATING

Pad floating

Functions

esp_err_t gpio_config(gpio_config_t *pGPIOConfig)

GPIO common configuration.

Configure GPIO’s Mode,pull-up,PullDown,IntrType

Return
  • ESP_OK success
  • ESP_ERR_INVALID_ARG Parameter error
Parameters
  • pGPIOConfig: Pointer to GPIO configure struct

esp_err_t gpio_set_intr_type(gpio_num_t gpio_num, gpio_int_type_t intr_type)

GPIO set interrupt trigger type.

Return
  • ESP_OK Success
  • ESP_ERR_INVALID_ARG Parameter error
Parameters
  • gpio_num: GPIO number. If you want to set the trigger type of e.g. of GPIO16, gpio_num should be GPIO_NUM_16 (16);
  • intr_type: Interrupt type, select from gpio_int_type_t

esp_err_t gpio_intr_enable(gpio_num_t gpio_num)

Enable GPIO module interrupt signal.

Return
  • ESP_OK Success
  • ESP_ERR_INVALID_ARG Parameter error
Parameters
  • gpio_num: GPIO number. If you want to enable an interrupt on e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);

esp_err_t gpio_intr_disable(gpio_num_t gpio_num)

Disable GPIO module interrupt signal.

Return
  • ESP_OK success
  • ESP_ERR_INVALID_ARG Parameter error
Parameters
  • gpio_num: GPIO number. If you want to disable the interrupt of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);

esp_err_t gpio_set_level(gpio_num_t gpio_num, uint32_t level)

GPIO set output level.

Return
  • ESP_OK Success
  • GPIO_IS_VALID_GPIO GPIO number error
Parameters
  • gpio_num: GPIO number. If you want to set the output level of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
  • level: Output level. 0: low ; 1: high

int gpio_get_level(gpio_num_t gpio_num)

GPIO get input level.

Return
  • 0 the GPIO input level is 0
  • 1 the GPIO input level is 1
Parameters
  • gpio_num: GPIO number. If you want to get the logic level of e.g. pin GPIO16, gpio_num should be GPIO_NUM_16 (16);

esp_err_t gpio_set_direction(gpio_num_t gpio_num, gpio_mode_t mode)

GPIO set direction.

Configure GPIO direction,such as output_only,input_only,output_and_input

Return
  • ESP_OK Success
  • ESP_ERR_INVALID_ARG GPIO error
Parameters
  • gpio_num: Configure GPIO pins number, it should be GPIO number. If you want to set direction of e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
  • mode: GPIO direction

esp_err_t gpio_set_pull_mode(gpio_num_t gpio_num, gpio_pull_mode_t pull)

GPIO set pull.

User this Function,configure GPIO pull mode,such as pull-up,pull-down

Return
  • ESP_OK Success
  • ESP_ERR_INVALID_ARG : Parameter error
Parameters
  • gpio_num: GPIO number. If you want to set pull up or down mode for e.g. GPIO16, gpio_num should be GPIO_NUM_16 (16);
  • pull: GPIO pull up/down mode.

esp_err_t gpio_wakeup_enable(gpio_num_t gpio_num, gpio_int_type_t intr_type)

enable GPIO wake-up function.

Return
  • ESP_OK Success
  • ESP_ERR_INVALID_ARG Parameter error
Parameters
  • gpio_num: GPIO number.
  • intr_type: GPIO wake-up type. Only GPIO_INTR_LOW_LEVEL or GPIO_INTR_HIGH_LEVEL can be used.

esp_err_t gpio_wakeup_disable(gpio_num_t gpio_num)

Disable GPIO wake-up function.

Return
  • ESP_OK Success
  • ESP_ERR_INVALID_ARG Parameter error
Parameters
  • gpio_num: GPIO number

esp_err_t gpio_isr_register(uint32_t gpio_intr_num, void (*fn)(void *), void *arg, )

register GPIO interrupt handler, the handler is an ISR. The handler will be attached to the same CPU core that this function is running on.

Note
Users should know that which CPU is running and then pick a INUM that is not used by system. We can find the information of INUM and interrupt level in soc.h.
Return
  • ESP_OK Success ;
  • ESP_ERR_INVALID_ARG GPIO error
Parameters
  • gpio_intr_num: GPIO interrupt number,check the info in soc.h, and please see the core-isa.h for more details
  • fn: Interrupt handler function.
        @note
        Note that the handler function MUST be defined with attribution of "IRAM_ATTR".
    
  • arg: Parameter for handler function