#include "batt_charge.h" #include #include "esp_sleep.h" #include "driver/gpio.h" #include "LED.h" #include "ulp_main.h" #define GPIO_PIN GPIO_NUM_33 extern void beep_blink(uint16_t ms,uint16_t count); void chargeing_gpio_isr_handler(void* arg) { printf("chargeing\r\n"); // 在这里执行唤醒时需要处理的任务 // ... //beep_blink(100,4); // 清除中断状态 // uint32_t gpio_intr_status = READ_PERI_REG(GPIO_STATUS_REG); // WRITE_PERI_REG(GPIO_STATUS_W1TC_REG, gpio_intr_status); } void charge_success_gpio_isr_handler(void* arg) { // 在这里执行唤醒时需要处理的任务 // ... //printf("charge_success_gpio_isr_handler\r\n"); //beep_blink(100,3); // // 清除中断状态 // uint32_t gpio_intr_status = READ_PERI_REG(GPIO_STATUS_REG); // WRITE_PERI_REG(GPIO_STATUS_W1TC_REG, gpio_intr_status); } void configure_gpio_interrupt() { } // void app_main() { // configure_gpio_interrupt(); // while (1) { // // 进入Light Sleep模式 // esp_sleep_enable_gpio_wakeup(); // 允许GPIO唤醒 // esp_light_sleep_start(); // 进入Light Sleep模式 // } // } void charge_init() { // #include "driver/rtc_io.h" #if 0 gpio_config_t io_conf; // 中断引脚配置 io_conf.intr_type = GPIO_INTR_ANYEDGE; // 中断触发类型(上升沿/下降沿/任意边缘触发) io_conf.pin_bit_mask = ((1ULL << CHARGEING_GPIO)); // GPIO引脚 io_conf.mode = GPIO_MODE_INPUT; // 输入模式 io_conf.pull_up_en = GPIO_PULLUP_DISABLE; // 禁用上拉电阻 io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE; // 禁用下拉电阻 gpio_config(&io_conf); // 安装GPIO中断处理程序 gpio_install_isr_service(0); gpio_isr_handler_add(CHARGEING_GPIO, chargeing_gpio_isr_handler, (void*) CHARGEING_GPIO); //gpio_isr_handler_add(CHARGEING_GPIO, chargeing_gpio_isr_handler, (void*) CHARGE_SUCCESS_GPIO); #else // ESP_ERROR_CHECK(rtc_gpio_init(CHARGEING_GPIO)); // ESP_ERROR_CHECK(gpio_pullup_dis(CHARGEING_GPIO)); // ESP_ERROR_CHECK(gpio_pulldown_dis(CHARGEING_GPIO)); // ESP_ERROR_CHECK(esp_sleep_enable_ext0_wakeup(CHARGEING_GPIO, 0)); // ESP_ERROR_CHECK(rtc_gpio_init(CHARGE_SUCCESS_GPIO)); // ESP_ERROR_CHECK(gpio_pullup_dis(CHARGE_SUCCESS_GPIO)); // ESP_ERROR_CHECK(gpio_pulldown_dis(CHARGE_SUCCESS_GPIO)); // ESP_ERROR_CHECK(esp_sleep_enable_ext0_wakeup(CHARGE_SUCCESS_GPIO, 0)); // uint32_t value = ulp_charge_is_success; // uint32_t value1 = ulp_charge_is_running; #endif } void charge_deinit() { }