gpio_wakeup.c 894 B

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Unlicense OR CC0-1.0
  5. */
  6. #include <stdio.h>
  7. #include "driver/gpio.h"
  8. #include "esp_sleep.h"
  9. #include "sdkconfig.h"
  10. #if CONFIG_EXAMPLE_GPIO_WAKEUP
  11. #define DEFAULT_WAKEUP_PIN CONFIG_EXAMPLE_GPIO_WAKEUP_PIN
  12. #ifdef CONFIG_EXAMPLE_GPIO_WAKEUP_HIGH_LEVEL
  13. #define DEFAULT_WAKEUP_LEVEL ESP_GPIO_WAKEUP_GPIO_HIGH
  14. #else
  15. #define DEFAULT_WAKEUP_LEVEL ESP_GPIO_WAKEUP_GPIO_LOW
  16. #endif
  17. void example_deep_sleep_register_gpio_wakeup(void)
  18. {
  19. const gpio_config_t config = {
  20. .pin_bit_mask = BIT(DEFAULT_WAKEUP_PIN),
  21. .mode = GPIO_MODE_INPUT,
  22. };
  23. ESP_ERROR_CHECK(gpio_config(&config));
  24. ESP_ERROR_CHECK(esp_deep_sleep_enable_gpio_wakeup(BIT(DEFAULT_WAKEUP_PIN), DEFAULT_WAKEUP_LEVEL));
  25. printf("Enabling GPIO wakeup on pins GPIO%d\n", DEFAULT_WAKEUP_PIN);
  26. }
  27. #endif