[优化]-jiuchuan-s3-优化电源管理架构 (#875)

* 添加 jiuchuang-s3 开发板支持

* 增加编译指南

* 优开发板支持包文件目录,更新README.md

删除了多余板载文件
[* ]README.md -> 更新了编译指南和烧录指南

* 修改板级支持包名

* 使用乐鑫提供的电源监测

* 修复部分代码格式问题

* 解决合并冲突

* 解决部分合并内容

* 完善合并内容

* 修复电量映射表错误

* 优化电源管理架构-使用rtc-io电源保持

---------

Co-authored-by: unknown <jake12355>
Co-authored-by: Hangon66 <2630612613@qq.com>
This commit is contained in:
jake12355
2025-07-18 01:29:30 +08:00
committed by GitHub
parent 1aea59a472
commit c68c959e9b
3 changed files with 79 additions and 65 deletions

View File

@@ -132,14 +132,9 @@ private:
}
void InitializeButtons() {
auto& powerCtrl = PowerController::Instance();
powerCtrl.SetState(PowerController::PowerState::ACTIVE); // 确保初始状态为ACTIVE
// 配置GPIO
ESP_LOGI(TAG, "Configuring power button GPIO");
GpioManager::Config(GPIO_NUM_3, GpioManager::GpioMode::INPUT_PULLDOWN);
GpioManager::Config(PWR_EN_GPIO, GpioManager::GpioMode::OUTPUT);
GpioManager::SetLevel(PWR_EN_GPIO, 1); // 确保电源使能
boot_button_.OnClick([this]() {
ESP_LOGI(TAG, "Boot button clicked");
@@ -150,7 +145,7 @@ private:
ESP_LOGI(TAG, "Power button initial state: %d", GpioManager::GetLevel(PWR_BUTTON_GPIO));
// 高电平有效长按关机逻辑
pwr_button_.OnLongPress([&powerCtrl]() {
pwr_button_.OnLongPress([this]() {
ESP_LOGI(TAG, "Power button long press detected (high-active)");
// 高电平有效防抖确认
@@ -164,26 +159,20 @@ private:
}
vTaskDelay(100 / portTICK_PERIOD_MS);
}
ESP_LOGI(TAG, "Confirmed power button pressed (level=1)");
ESP_LOGI(TAG, "Confirmed power button pressed - initiating shutdown");
powerCtrl.SetState(PowerController::PowerState::SHUTDOWN);
// 确保状态变更
if (powerCtrl.GetState() != PowerController::PowerState::SHUTDOWN) {
ESP_LOGE(TAG, "Failed to set shutdown state!");
}
power_manager_->SetPowerState(PowerState::SHUTDOWN);
});
wifi_button.OnClick([this, &powerCtrl]() {
wifi_button.OnClick([this]() {
ESP_LOGI(TAG, "Wifi button clicked");
power_save_timer_->WakeUp();
if (powerCtrl.GetState() == PowerController::PowerState::ACTIVE) {
ESP_LOGI(TAG, "Resetting WiFi configuration");
GpioManager::SetLevel(PWR_EN_GPIO, 1);
ResetWifiConfiguration();
}
ESP_LOGI(TAG, "Resetting WiFi configuration");
GpioManager::SetLevel(PWR_EN_GPIO, 1);
ResetWifiConfiguration();
});
cmd_button.OnClick([this]() {
@@ -191,40 +180,6 @@ private:
power_save_timer_->WakeUp();
Application::GetInstance().ToggleChatState();
});
// 配置电源状态变更回调(优化版)
powerCtrl.OnStateChange([this](PowerController::PowerState newState) {
switch(newState) {
case PowerController::PowerState::SHUTDOWN: {
ESP_LOGI(TAG, "Entering shutdown sequence");
// 统一唤醒触发条件
#ifndef __USER_GPIO_PWRDOWN__
ESP_LOGD(TAG, "Configuring high-level wakeup on GPIO%d", PWR_BUTTON_GPIO);
ESP_ERROR_CHECK(esp_sleep_enable_ext0_wakeup(PWR_BUTTON_GPIO, 1)); // 高电平唤醒
#else
ESP_LOGD(TAG, "Powering down via GPIO control");
GpioManager::SetLevel(PWR_EN_GPIO, 0);
#endif
// 确保所有外设已关闭
vTaskDelay(200 / portTICK_PERIOD_MS);
ESP_LOGI(TAG, "Initiating deep sleep");
// 最后状态确认(通过单例访问)
if (PowerController::Instance().GetState() != PowerController::PowerState::SHUTDOWN) {
ESP_LOGE(TAG, "State inconsistency! Forcing shutdown");
}
esp_deep_sleep_start();
break;
}
default:
ESP_LOGD(TAG, "State changed to %d", static_cast<int>(newState));
break;
}
});
}
void InitializeGC9301isplay() {