1、充电时不再叠待机绿灯;意外复位不再跳过 3s 开机按键判定

2、电机停转去掉反接刹车改自由滑行,避免电流冲击触发 LVD 复位;
3、关机直接 power_set_soft_poweroff,跳过耳机 SDK 优雅关机流程,按键关机从十几秒压到瞬间掉电
This commit is contained in:
2026-08-25 20:05:59 +08:00
parent 5e5f921a3a
commit 93c1943992
8 changed files with 72 additions and 67 deletions
+10 -10
View File
@@ -80,16 +80,16 @@ static uint8_t boot_skip_key_wait(void)
boot_delay_ms(5);
}
/* 以下都是“芯片自己意外重启了一下”,不是用户主动按开机键,
* 不能因此逼用户重新按键,否则相当于设备无故“关机”了一次 */
if (cpu_reset_by_soft() /* SDK 综合判断:是否软件复位 */
|| is_reset_source(MSYS_SOFT_RST) /* 主系统软件复位(断言/异常/OTA 后重启等) */
|| is_reset_source(P33_SOFT_RST) /* P33 软件复位,最常见的软复位入口 */
|| is_reset_source(P33_VDDIO_LVD_RST) /* VDDIO 低压复位(电机启动拉低电压误触发) */
|| is_reset_source(P11_WDT_RST)) { /* 看门狗复位(程序卡死被强制重启) */
log_info("boot reset-keep, skip key wait\n");
return 1;
}
// /* 以下都是“芯片自己意外重启了一下”,不是用户主动按开机键,
// * 不能因此逼用户重新按键,否则相当于设备无故“关机”了一次 */
// if (cpu_reset_by_soft() /* SDK 综合判断:是否软件复位 */
// || is_reset_source(MSYS_SOFT_RST) /* 主系统软件复位(断言/异常/OTA 后重启等) */
// || is_reset_source(P33_SOFT_RST) /* P33 软件复位,最常见的软复位入口 */
// || is_reset_source(P33_VDDIO_LVD_RST) /* VDDIO 低压复位(电机启动拉低电压误触发) */
// || is_reset_source(P11_WDT_RST)) { /* 看门狗复位(程序卡死被强制重启) */
// log_info("boot reset-keep, skip key wait\n");
// return 1;
// }
return 0;
}
+1 -1
View File
@@ -91,7 +91,7 @@ void app_function_poll(void)
void app_function_tick_1ms(uint16_t dt)
{
if (s_func.hand_busy) {
bsp_motor_brake_tick();
bsp_motor_switch_tick();
s_func.hand_ms = app_add_ms(s_func.hand_ms, dt);
} else {
app_mode_run();
+2 -1
View File
@@ -193,7 +193,8 @@ void app_led_run(uint16_t dt, uint8_t app_power)
led_clear_function_events();
} else {
#if BOARD_LED_STANDBY_ON
if ((charge_led != 2) && !pairing && !green_busy()) {
/* 正在充电(红)或已充满(绿)时都不叠加待机绿,只有完全没接电才显示待机 */
if ((charge_led == 0) && !pairing && !green_busy()) {
LED_EventAdd(LED_EVENT_STANDBY);
} else {
LED_EventDelete(LED_EVENT_STANDBY);
+1 -1
View File
@@ -201,7 +201,7 @@ void app_mode_run(void)
{
const AppModeStep_t *tbl;
bsp_motor_brake_tick();
bsp_motor_switch_tick();
if (!s_mode.initialized || s_mode.active == 0) {
return;
}