ESP32P4 deep sleep
Posted: Sun Jan 19, 2025 11:09 am
这个程序用GPIO25按键按下无法唤醒(按键按下低电平)
#include <stdio.h>
#include "driver/gpio.h"
#include <time.h>
#include <sys/time.h>
#include "sdkconfig.h"
#include "soc/soc_caps.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_sleep.h"
#include "esp_log.h"
#include "driver/rtc_io.h"
#include "nvs_flash.h"
#include "nvs.h"
#define DEFAULT_WAKEUP_PIN 25
#define DEFAULT_WAKEUP_LEVEL ESP_GPIO_WAKEUP_GPIO_LOW
void example_deep_sleep_register_gpio_wakeup(void)
{
const gpio_config_t config = {
.pin_bit_mask = BIT(DEFAULT_WAKEUP_PIN),
.mode = GPIO_MODE_INPUT,
.pull_up_en = 1,
.pull_down_en = 0
};
ESP_ERROR_CHECK(gpio_config(&config));
//esp_sleep_enable_ext1_wakeup(DEFAULT_WAKEUP_PIN, DEFAULT_WAKEUP_LEVEL);
esp_deep_sleep_enable_gpio_wakeup(BIT(DEFAULT_WAKEUP_PIN), DEFAULT_WAKEUP_LEVEL);
printf("Enabling GPIO wakeup on pins GPIO%d\n", DEFAULT_WAKEUP_PIN);
}
void app_main()
{
uint64_t wakeup_pin_mask = 0;
example_deep_sleep_register_gpio_wakeup();
//light_sleep_wakeup();
//rtc_gpio_isolate(GPIO_NUM_25);
printf("sleep\r\n");
vTaskDelay(500);
esp_deep_sleep_start();
//esp_light_sleep_start();
while(1)
{
printf("exit_sleep\r\n");
vTaskDelay(300);
}
}
#include <stdio.h>
#include "driver/gpio.h"
#include <time.h>
#include <sys/time.h>
#include "sdkconfig.h"
#include "soc/soc_caps.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_sleep.h"
#include "esp_log.h"
#include "driver/rtc_io.h"
#include "nvs_flash.h"
#include "nvs.h"
#define DEFAULT_WAKEUP_PIN 25
#define DEFAULT_WAKEUP_LEVEL ESP_GPIO_WAKEUP_GPIO_LOW
void example_deep_sleep_register_gpio_wakeup(void)
{
const gpio_config_t config = {
.pin_bit_mask = BIT(DEFAULT_WAKEUP_PIN),
.mode = GPIO_MODE_INPUT,
.pull_up_en = 1,
.pull_down_en = 0
};
ESP_ERROR_CHECK(gpio_config(&config));
//esp_sleep_enable_ext1_wakeup(DEFAULT_WAKEUP_PIN, DEFAULT_WAKEUP_LEVEL);
esp_deep_sleep_enable_gpio_wakeup(BIT(DEFAULT_WAKEUP_PIN), DEFAULT_WAKEUP_LEVEL);
printf("Enabling GPIO wakeup on pins GPIO%d\n", DEFAULT_WAKEUP_PIN);
}
void app_main()
{
uint64_t wakeup_pin_mask = 0;
example_deep_sleep_register_gpio_wakeup();
//light_sleep_wakeup();
//rtc_gpio_isolate(GPIO_NUM_25);
printf("sleep\r\n");
vTaskDelay(500);
esp_deep_sleep_start();
//esp_light_sleep_start();
while(1)
{
printf("exit_sleep\r\n");
vTaskDelay(300);
}
}