2017-02-15 21:59:50 -05:00
GPIO & RTC GPIO
===============
2016-10-25 06:09:05 -04:00
2016-10-26 15:08:36 -04:00
Overview
--------
2016-12-24 07:45:57 -05:00
The ESP32 chip features 40 physical GPIO pads. Some GPIO pads cannot be used or do not have the corresponding pin on the chip package(refer to technical reference manual ). Each pad can be used as a general purpose I/O or can be connected to an internal peripheral signal.
2017-02-15 21:59:50 -05:00
- Note that GPIO6-11 are usually used for SPI flash.
- GPIO34-39 can only be set as input mode and do not have software pullup or pulldown functions.
There is also separate "RTC GPIO" support, which functions when GPIOs are routed to the "RTC" low-power and analog subsystem. These pin functions can be used when in deep sleep, when the :doc: `Ultra Low Power co-processor </ulp>` is running, or when analog functions such as ADC/DAC/etc are in use.
2016-10-26 15:08:36 -04:00
Application Example
-------------------
2017-01-19 03:16:06 -05:00
GPIO output and input interrupt example: :example: `peripherals/gpio` .
2016-11-05 12:18:25 -04:00
API Reference
-------------
2016-11-10 16:50:55 -05:00
Header Files
^^^^^^^^^^^^
2017-01-19 03:16:06 -05:00
* :component_file:`driver/include/driver/gpio.h`
2017-02-15 21:59:50 -05:00
* :component_file:`driver/include/driver/rtc_io.h`
2016-11-10 16:50:55 -05:00
2016-11-05 12:18:25 -04:00
Macros
2016-11-10 16:50:55 -05:00
^^^^^^
2016-11-05 12:18:25 -04:00
2017-02-15 21:59:50 -05:00
Normal GPIO
~~~~~~~~~~~
2016-11-05 12:18:25 -04:00
.. doxygendefine :: GPIO_SEL_0
.. doxygendefine :: GPIO_SEL_1
.. doxygendefine :: GPIO_SEL_2
.. doxygendefine :: GPIO_SEL_3
.. doxygendefine :: GPIO_SEL_4
.. doxygendefine :: GPIO_SEL_5
.. doxygendefine :: GPIO_SEL_6
.. doxygendefine :: GPIO_SEL_7
.. doxygendefine :: GPIO_SEL_8
.. doxygendefine :: GPIO_SEL_9
.. doxygendefine :: GPIO_SEL_10
.. doxygendefine :: GPIO_SEL_11
.. doxygendefine :: GPIO_SEL_12
.. doxygendefine :: GPIO_SEL_13
.. doxygendefine :: GPIO_SEL_14
.. doxygendefine :: GPIO_SEL_15
.. doxygendefine :: GPIO_SEL_16
.. doxygendefine :: GPIO_SEL_17
.. doxygendefine :: GPIO_SEL_18
.. doxygendefine :: GPIO_SEL_19
.. doxygendefine :: GPIO_SEL_21
.. doxygendefine :: GPIO_SEL_22
.. doxygendefine :: GPIO_SEL_23
.. doxygendefine :: GPIO_SEL_25
.. doxygendefine :: GPIO_SEL_26
.. doxygendefine :: GPIO_SEL_27
.. doxygendefine :: GPIO_SEL_32
.. doxygendefine :: GPIO_SEL_33
.. doxygendefine :: GPIO_SEL_34
.. doxygendefine :: GPIO_SEL_35
.. doxygendefine :: GPIO_SEL_36
.. doxygendefine :: GPIO_SEL_37
.. doxygendefine :: GPIO_SEL_38
.. doxygendefine :: GPIO_SEL_39
.. doxygendefine :: GPIO_PIN_REG_0
.. doxygendefine :: GPIO_PIN_REG_1
.. doxygendefine :: GPIO_PIN_REG_2
.. doxygendefine :: GPIO_PIN_REG_3
.. doxygendefine :: GPIO_PIN_REG_4
.. doxygendefine :: GPIO_PIN_REG_5
.. doxygendefine :: GPIO_PIN_REG_6
.. doxygendefine :: GPIO_PIN_REG_7
.. doxygendefine :: GPIO_PIN_REG_8
.. doxygendefine :: GPIO_PIN_REG_9
.. doxygendefine :: GPIO_PIN_REG_10
.. doxygendefine :: GPIO_PIN_REG_11
.. doxygendefine :: GPIO_PIN_REG_12
.. doxygendefine :: GPIO_PIN_REG_13
.. doxygendefine :: GPIO_PIN_REG_14
.. doxygendefine :: GPIO_PIN_REG_15
.. doxygendefine :: GPIO_PIN_REG_16
.. doxygendefine :: GPIO_PIN_REG_17
.. doxygendefine :: GPIO_PIN_REG_18
.. doxygendefine :: GPIO_PIN_REG_19
.. doxygendefine :: GPIO_PIN_REG_20
.. doxygendefine :: GPIO_PIN_REG_21
.. doxygendefine :: GPIO_PIN_REG_22
.. doxygendefine :: GPIO_PIN_REG_23
.. doxygendefine :: GPIO_PIN_REG_25
.. doxygendefine :: GPIO_PIN_REG_26
.. doxygendefine :: GPIO_PIN_REG_27
.. doxygendefine :: GPIO_PIN_REG_32
.. doxygendefine :: GPIO_PIN_REG_33
.. doxygendefine :: GPIO_PIN_REG_34
.. doxygendefine :: GPIO_PIN_REG_35
.. doxygendefine :: GPIO_PIN_REG_36
.. doxygendefine :: GPIO_PIN_REG_37
.. doxygendefine :: GPIO_PIN_REG_38
.. doxygendefine :: GPIO_PIN_REG_39
.. doxygendefine :: GPIO_APP_CPU_INTR_ENA
.. doxygendefine :: GPIO_APP_CPU_NMI_INTR_ENA
.. doxygendefine :: GPIO_PRO_CPU_INTR_ENA
.. doxygendefine :: GPIO_PRO_CPU_NMI_INTR_ENA
.. doxygendefine :: GPIO_SDIO_EXT_INTR_ENA
.. doxygendefine :: GPIO_MODE_DEF_INPUT
.. doxygendefine :: GPIO_MODE_DEF_OUTPUT
.. doxygendefine :: GPIO_MODE_DEF_OD
.. doxygendefine :: GPIO_PIN_COUNT
.. doxygendefine :: GPIO_IS_VALID_GPIO
.. doxygendefine :: GPIO_IS_VALID_OUTPUT_GPIO
Type Definitions
^^^^^^^^^^^^^^^^
2017-02-15 21:59:50 -05:00
Normal GPIO
~~~~~~~~~~~
2016-12-24 07:45:57 -05:00
.. doxygentypedef :: gpio_isr_t
.. doxygentypedef :: gpio_isr_handle_t
2016-10-26 15:08:36 -04:00
2016-10-26 16:17:58 -04:00
Enumerations
^^^^^^^^^^^^
2017-02-15 21:59:50 -05:00
Normal GPIO
~~~~~~~~~~~
2016-11-05 12:18:25 -04:00
.. doxygenenum :: gpio_num_t
2016-10-26 16:17:58 -04:00
.. doxygenenum :: gpio_int_type_t
.. doxygenenum :: gpio_mode_t
2016-11-05 12:18:25 -04:00
.. doxygenenum :: gpio_pullup_t
.. doxygenenum :: gpio_pulldown_t
2016-10-26 16:17:58 -04:00
.. doxygenenum :: gpio_pull_mode_t
2017-02-15 21:59:50 -05:00
RTC GPIO
~~~~~~~~
.. doxygenenum :: rtc_gpio_mode_t
2016-12-24 07:45:57 -05:00
Structures
^^^^^^^^^^
2017-02-15 21:59:50 -05:00
Normal GPIO
~~~~~~~~~~~
2016-12-24 07:45:57 -05:00
.. doxygenstruct :: gpio_config_t
:members:
2016-10-26 15:08:36 -04:00
Functions
^^^^^^^^^
2017-02-15 21:59:50 -05:00
Normal GPIO
~~~~~~~~~~~
2016-10-25 06:09:05 -04:00
.. doxygenfunction :: gpio_config
.. doxygenfunction :: gpio_set_intr_type
.. doxygenfunction :: gpio_intr_enable
.. doxygenfunction :: gpio_intr_disable
.. doxygenfunction :: gpio_set_level
.. doxygenfunction :: gpio_get_level
.. doxygenfunction :: gpio_set_direction
.. doxygenfunction :: gpio_set_pull_mode
.. doxygenfunction :: gpio_wakeup_enable
.. doxygenfunction :: gpio_wakeup_disable
.. doxygenfunction :: gpio_isr_register
2016-12-24 07:45:57 -05:00
.. doxygenfunction :: gpio_pullup_en
.. doxygenfunction :: gpio_pullup_dis
.. doxygenfunction :: gpio_pulldown_en
.. doxygenfunction :: gpio_pulldown_dis
.. doxygenfunction :: gpio_install_isr_service
.. doxygenfunction :: gpio_uninstall_isr_service
.. doxygenfunction :: gpio_isr_handler_add
.. doxygenfunction :: gpio_isr_handler_remove
2017-02-15 21:59:50 -05:00
RTC GPIO
~~~~~~~~
.. doxygenfunction :: rtc_gpio_is_valid_gpio
.. doxygenfunction :: rtc_gpio_init
.. doxygenfunction :: rtc_gpio_deinit
.. doxygenfunction :: rtc_gpio_get_level
.. doxygenfunction :: rtc_gpio_set_level
.. doxygenfunction :: rtc_gpio_set_direction
.. doxygenfunction :: rtc_gpio_pullup_en
.. doxygenfunction :: rtc_gpio_pulldown_en
.. doxygenfunction :: rtc_gpio_pullup_dis
.. doxygenfunction :: rtc_gpio_pulldown_dis
.. doxygenfunction :: rtc_gpio_unhold_all