gpio.rst 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. GPIO & RTC GPIO
  2. ===============
  3. Overview
  4. --------
  5. 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.
  6. - Note that GPIO6-11 are usually used for SPI flash.
  7. - GPIO34-39 can only be set as input mode and do not have software pullup or pulldown functions.
  8. 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.
  9. Application Example
  10. -------------------
  11. GPIO output and input interrupt example: :example:`peripherals/gpio`.
  12. API Reference
  13. -------------
  14. Header Files
  15. ^^^^^^^^^^^^
  16. * :component_file:`driver/include/driver/gpio.h`
  17. * :component_file:`driver/include/driver/rtc_io.h`
  18. Macros
  19. ^^^^^^
  20. Normal GPIO
  21. ~~~~~~~~~~~
  22. .. doxygendefine:: GPIO_SEL_0
  23. .. doxygendefine:: GPIO_SEL_1
  24. .. doxygendefine:: GPIO_SEL_2
  25. .. doxygendefine:: GPIO_SEL_3
  26. .. doxygendefine:: GPIO_SEL_4
  27. .. doxygendefine:: GPIO_SEL_5
  28. .. doxygendefine:: GPIO_SEL_6
  29. .. doxygendefine:: GPIO_SEL_7
  30. .. doxygendefine:: GPIO_SEL_8
  31. .. doxygendefine:: GPIO_SEL_9
  32. .. doxygendefine:: GPIO_SEL_10
  33. .. doxygendefine:: GPIO_SEL_11
  34. .. doxygendefine:: GPIO_SEL_12
  35. .. doxygendefine:: GPIO_SEL_13
  36. .. doxygendefine:: GPIO_SEL_14
  37. .. doxygendefine:: GPIO_SEL_15
  38. .. doxygendefine:: GPIO_SEL_16
  39. .. doxygendefine:: GPIO_SEL_17
  40. .. doxygendefine:: GPIO_SEL_18
  41. .. doxygendefine:: GPIO_SEL_19
  42. .. doxygendefine:: GPIO_SEL_21
  43. .. doxygendefine:: GPIO_SEL_22
  44. .. doxygendefine:: GPIO_SEL_23
  45. .. doxygendefine:: GPIO_SEL_25
  46. .. doxygendefine:: GPIO_SEL_26
  47. .. doxygendefine:: GPIO_SEL_27
  48. .. doxygendefine:: GPIO_SEL_32
  49. .. doxygendefine:: GPIO_SEL_33
  50. .. doxygendefine:: GPIO_SEL_34
  51. .. doxygendefine:: GPIO_SEL_35
  52. .. doxygendefine:: GPIO_SEL_36
  53. .. doxygendefine:: GPIO_SEL_37
  54. .. doxygendefine:: GPIO_SEL_38
  55. .. doxygendefine:: GPIO_SEL_39
  56. .. doxygendefine:: GPIO_PIN_REG_0
  57. .. doxygendefine:: GPIO_PIN_REG_1
  58. .. doxygendefine:: GPIO_PIN_REG_2
  59. .. doxygendefine:: GPIO_PIN_REG_3
  60. .. doxygendefine:: GPIO_PIN_REG_4
  61. .. doxygendefine:: GPIO_PIN_REG_5
  62. .. doxygendefine:: GPIO_PIN_REG_6
  63. .. doxygendefine:: GPIO_PIN_REG_7
  64. .. doxygendefine:: GPIO_PIN_REG_8
  65. .. doxygendefine:: GPIO_PIN_REG_9
  66. .. doxygendefine:: GPIO_PIN_REG_10
  67. .. doxygendefine:: GPIO_PIN_REG_11
  68. .. doxygendefine:: GPIO_PIN_REG_12
  69. .. doxygendefine:: GPIO_PIN_REG_13
  70. .. doxygendefine:: GPIO_PIN_REG_14
  71. .. doxygendefine:: GPIO_PIN_REG_15
  72. .. doxygendefine:: GPIO_PIN_REG_16
  73. .. doxygendefine:: GPIO_PIN_REG_17
  74. .. doxygendefine:: GPIO_PIN_REG_18
  75. .. doxygendefine:: GPIO_PIN_REG_19
  76. .. doxygendefine:: GPIO_PIN_REG_20
  77. .. doxygendefine:: GPIO_PIN_REG_21
  78. .. doxygendefine:: GPIO_PIN_REG_22
  79. .. doxygendefine:: GPIO_PIN_REG_23
  80. .. doxygendefine:: GPIO_PIN_REG_25
  81. .. doxygendefine:: GPIO_PIN_REG_26
  82. .. doxygendefine:: GPIO_PIN_REG_27
  83. .. doxygendefine:: GPIO_PIN_REG_32
  84. .. doxygendefine:: GPIO_PIN_REG_33
  85. .. doxygendefine:: GPIO_PIN_REG_34
  86. .. doxygendefine:: GPIO_PIN_REG_35
  87. .. doxygendefine:: GPIO_PIN_REG_36
  88. .. doxygendefine:: GPIO_PIN_REG_37
  89. .. doxygendefine:: GPIO_PIN_REG_38
  90. .. doxygendefine:: GPIO_PIN_REG_39
  91. .. doxygendefine:: GPIO_APP_CPU_INTR_ENA
  92. .. doxygendefine:: GPIO_APP_CPU_NMI_INTR_ENA
  93. .. doxygendefine:: GPIO_PRO_CPU_INTR_ENA
  94. .. doxygendefine:: GPIO_PRO_CPU_NMI_INTR_ENA
  95. .. doxygendefine:: GPIO_SDIO_EXT_INTR_ENA
  96. .. doxygendefine:: GPIO_MODE_DEF_INPUT
  97. .. doxygendefine:: GPIO_MODE_DEF_OUTPUT
  98. .. doxygendefine:: GPIO_MODE_DEF_OD
  99. .. doxygendefine:: GPIO_PIN_COUNT
  100. .. doxygendefine:: GPIO_IS_VALID_GPIO
  101. .. doxygendefine:: GPIO_IS_VALID_OUTPUT_GPIO
  102. Type Definitions
  103. ^^^^^^^^^^^^^^^^
  104. Normal GPIO
  105. ~~~~~~~~~~~
  106. .. doxygentypedef:: gpio_isr_t
  107. .. doxygentypedef:: gpio_isr_handle_t
  108. Enumerations
  109. ^^^^^^^^^^^^
  110. Normal GPIO
  111. ~~~~~~~~~~~
  112. .. doxygenenum:: gpio_num_t
  113. .. doxygenenum:: gpio_int_type_t
  114. .. doxygenenum:: gpio_mode_t
  115. .. doxygenenum:: gpio_pullup_t
  116. .. doxygenenum:: gpio_pulldown_t
  117. .. doxygenenum:: gpio_pull_mode_t
  118. RTC GPIO
  119. ~~~~~~~~
  120. .. doxygenenum:: rtc_gpio_mode_t
  121. Structures
  122. ^^^^^^^^^^
  123. Normal GPIO
  124. ~~~~~~~~~~~
  125. .. doxygenstruct:: gpio_config_t
  126. :members:
  127. Functions
  128. ^^^^^^^^^
  129. Normal GPIO
  130. ~~~~~~~~~~~
  131. .. doxygenfunction:: gpio_config
  132. .. doxygenfunction:: gpio_set_intr_type
  133. .. doxygenfunction:: gpio_intr_enable
  134. .. doxygenfunction:: gpio_intr_disable
  135. .. doxygenfunction:: gpio_set_level
  136. .. doxygenfunction:: gpio_get_level
  137. .. doxygenfunction:: gpio_set_direction
  138. .. doxygenfunction:: gpio_set_pull_mode
  139. .. doxygenfunction:: gpio_wakeup_enable
  140. .. doxygenfunction:: gpio_wakeup_disable
  141. .. doxygenfunction:: gpio_isr_register
  142. .. doxygenfunction:: gpio_pullup_en
  143. .. doxygenfunction:: gpio_pullup_dis
  144. .. doxygenfunction:: gpio_pulldown_en
  145. .. doxygenfunction:: gpio_pulldown_dis
  146. .. doxygenfunction:: gpio_install_isr_service
  147. .. doxygenfunction:: gpio_uninstall_isr_service
  148. .. doxygenfunction:: gpio_isr_handler_add
  149. .. doxygenfunction:: gpio_isr_handler_remove
  150. RTC GPIO
  151. ~~~~~~~~
  152. .. doxygenfunction:: rtc_gpio_is_valid_gpio
  153. .. doxygenfunction:: rtc_gpio_init
  154. .. doxygenfunction:: rtc_gpio_deinit
  155. .. doxygenfunction:: rtc_gpio_get_level
  156. .. doxygenfunction:: rtc_gpio_set_level
  157. .. doxygenfunction:: rtc_gpio_set_direction
  158. .. doxygenfunction:: rtc_gpio_pullup_en
  159. .. doxygenfunction:: rtc_gpio_pulldown_en
  160. .. doxygenfunction:: rtc_gpio_pullup_dis
  161. .. doxygenfunction:: rtc_gpio_pulldown_dis
  162. .. doxygenfunction:: rtc_gpio_unhold_all