GPIO¶
API Reference¶
Header File¶
Functions¶
-
esp_err_t
gpio_config
(const gpio_config_t *gpio_cfg)¶ GPIO common configuration.
Configure GPIO’s Mode,pull-up,PullDown,IntrType
- Return
- ESP_OK success
- ESP_ERR_INVALID_ARG Parameter error
- Parameters
gpio_cfg
: 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 GPIO12, gpio_num should be GPIO_NUM_12 (12);intr_type
: Interrupt type, select from gpio_int_type_t
-
esp_err_t
gpio_set_level
(gpio_num_t gpio_num, uint32_t level)¶ GPIO set output level.
- Return
- ESP_OK Success
- ESP_ERR_INVALID_ARG 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.
- Note
- If the pad is not configured for input (or input and output) the returned value is always 0.
- 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
- 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)¶ Configure GPIO pull-up/pull-down resistors.
- Note
- The GPIO of esp8266 can not be pulled down except RTC GPIO which can not be pulled up.
- 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.
- Note
- RTC IO can not use the wakeup 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.
- Note
- RTC IO can not use the wakeup function
- Return
- ESP_OK Success
- ESP_ERR_INVALID_ARG Parameter error
- Parameters
gpio_num
: GPIO number
-
esp_err_t
gpio_isr_register
(void (*fn)(void *), void *arg, int no_use, gpio_isr_handle_t *handle_no_use, )¶ Register GPIO interrupt handler, the handler is an ISR.
This ISR function is called whenever any GPIO interrupt occurs. See the alternative gpio_install_isr_service() and gpio_isr_handler_add() API in order to have the driver support per-GPIO ISRs.
- Return
- ESP_OK Success ;
- ESP_ERR_INVALID_ARG GPIO error
- ESP_ERR_NOT_FOUND No free interrupt found with the specified flags
- Parameters
fn
: Interrupt handler function.no_use
: In order to be compatible with esp32, the parameter has no practical meaning and can be filled with 0.arg
: Parameter for handler functionhandle_no_use
: Pointer to return handle. In order to be compatible with esp32,the parameter has no practical meaning and can be filled with NULL.
-
esp_err_t
gpio_pullup_en
(gpio_num_t gpio_num)¶ Enable pull-up on GPIO.
- Note
- The GPIO of esp8266 can not be pulled down except RTC GPIO which can not be pulled up.
- Return
- ESP_OK Success
- ESP_ERR_INVALID_ARG Parameter error
- Parameters
gpio_num
: GPIO number
-
esp_err_t
gpio_pullup_dis
(gpio_num_t gpio_num)¶ Disable pull-up on GPIO.
- Note
- The GPIO of esp8266 can not be pulled down except RTC GPIO which can not be pulled up.
- Return
- ESP_OK Success
- ESP_ERR_INVALID_ARG Parameter error
- Parameters
gpio_num
: GPIO number
-
esp_err_t
gpio_pulldown_en
(gpio_num_t gpio_num)¶ Enable pull-down on GPIO.
- Note
- The GPIO of esp8266 can not be pulled down except RTC GPIO which can not be pulled up.
- Return
- ESP_OK Success
- ESP_ERR_INVALID_ARG Parameter error
- Parameters
gpio_num
: GPIO number
-
esp_err_t
gpio_pulldown_dis
(gpio_num_t gpio_num)¶ Disable pull-down on GPIO.
- Note
- The GPIO of esp8266 can not be pulled down except RTC GPIO which can not be pulled up.
- Return
- ESP_OK Success
- ESP_ERR_INVALID_ARG Parameter error
- Parameters
gpio_num
: GPIO number
-
esp_err_t
gpio_install_isr_service
(int no_use)¶ Install the driver’s GPIO ISR handler service, which allows per-pin GPIO interrupt handlers.
This function is incompatible with gpio_isr_register() - if that function is used, a single global ISR is registered for all GPIO interrupts. If this function is used, the ISR service provides a global GPIO ISR and individual pin handlers are registered via the gpio_isr_handler_add() function.
- Return
- ESP_OK Success
- ESP_ERR_NO_MEM No memory to install this service
- ESP_ERR_INVALID_STATE ISR service already installed.
- ESP_ERR_NOT_FOUND No free interrupt found with the specified flags
- ESP_ERR_INVALID_ARG GPIO error
- Parameters
no_use
: In order to be compatible with esp32, the parameter has no practical meaning and can be filled with 0.
-
void
gpio_uninstall_isr_service
()¶ Uninstall the driver’s GPIO ISR service, freeing related resources.
-
esp_err_t
gpio_isr_handler_add
(gpio_num_t gpio_num, gpio_isr_t isr_handler, void *args)¶ Add ISR handler for the corresponding GPIO pin.
Call this function after using gpio_install_isr_service() to install the driver’s GPIO ISR handler service.
This ISR handler will be called from an ISR. So there is a stack size limit (configurable as “ISR stack size” in menuconfig). This limit is smaller compared to a global GPIO interrupt handler due to the additional level of indirection.
- Return
- ESP_OK Success
- ESP_ERR_INVALID_STATE Wrong state, the ISR service has not been initialized.
- ESP_ERR_INVALID_ARG Parameter error
- Parameters
gpio_num
: GPIO numberisr_handler
: ISR handler function for the corresponding GPIO number.args
: parameter for ISR handler.
-
esp_err_t
gpio_isr_handler_remove
(gpio_num_t gpio_num)¶ Remove ISR handler for the corresponding GPIO pin.
- Return
- ESP_OK Success
- ESP_ERR_INVALID_STATE Wrong state, the ISR service has not been initialized.
- ESP_ERR_INVALID_ARG Parameter error
- Parameters
gpio_num
: GPIO number
Structures¶
-
struct
gpio_config_t
¶ Configuration parameters of GPIO pad for gpio_config function.
Public Members
-
uint32_t
pin_bit_mask
¶ GPIO pin: set with bit mask, each bit maps to a GPIO
-
gpio_mode_t
mode
¶ GPIO mode: set input/output mode
-
gpio_pullup_t
pull_up_en
¶ GPIO pull-up
-
gpio_pulldown_t
pull_down_en
¶ GPIO pull-down
-
gpio_int_type_t
intr_type
¶ GPIO interrupt type
-
uint32_t
Macros¶
-
BIT
(x)¶
-
GPIO_Pin_0
¶
-
GPIO_Pin_1
¶
-
GPIO_Pin_2
¶
-
GPIO_Pin_3
¶
-
GPIO_Pin_4
¶
-
GPIO_Pin_5
¶
-
GPIO_Pin_6
¶
-
GPIO_Pin_7
¶
-
GPIO_Pin_8
¶
-
GPIO_Pin_9
¶
-
GPIO_Pin_10
¶
-
GPIO_Pin_11
¶
-
GPIO_Pin_12
¶
-
GPIO_Pin_13
¶
-
GPIO_Pin_14
¶
-
GPIO_Pin_15
¶
-
GPIO_Pin_16
¶
-
GPIO_Pin_All
¶
-
GPIO_MODE_DEF_DISABLE
¶
-
GPIO_MODE_DEF_INPUT
¶
-
GPIO_MODE_DEF_OUTPUT
¶
-
GPIO_MODE_DEF_OD
¶
-
GPIO_PIN_COUNT
¶
-
GPIO_IS_VALID_GPIO
(gpio_num)¶ Check whether it is a valid GPIO number
-
RTC_GPIO_IS_VALID_GPIO
(gpio_num)¶ Check whether it is a valid RTC GPIO number
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_MAX
= 17¶
-
-
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_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
-
-
enum
gpio_pull_mode_t
¶ Values:
-
GPIO_PULLUP_ONLY
¶ Pad pull up
-
GPIO_PULLDOWN_ONLY
¶ Pad pull down
-
GPIO_FLOATING
¶ Pad floating
-