1、低电 3.7V 只闪红灯不再 1 分钟后关机;电量低于约 5% 自动关机,未充电开机先闪 5 下红灯再睡回,只能充电后才能开机

2、自动/手动互相切换都闪 2 下灯;APP 发停止后再发自动模式可正常启动,手动残留停止不再挡住自动
3、自动模式 1~6 单次最长跑 10 分钟后回待机;关机时长按 12 秒进 OTA,OTA 期间红绿交替闪
This commit is contained in:
2026-08-27 10:20:48 +08:00
parent 3d445ae5c5
commit fdb43011b7
28 changed files with 945 additions and 165 deletions
+58
View File
@@ -0,0 +1,58 @@
/******************************************************************************
* @file app_battery.h
* @brief 电量算法:电压滤波、充放电基准记录、突变防抖、缓冲平滑显示
* @author cyWu <1917507415@qq.com>
* @date 2026.08.27
* @version V1.0.1
* @history
* - V1.0.0, 2026.08.26, cyWu, 首次发布,实现电压滤波、充放电基准、突变防抖与缓冲平滑
* - V1.0.1, 2026.08.27, cyWu, 补充模块说明注释
*
* @note 本模块只认识"电压(mV) + 是否在充电",不碰 ADC/GPIO,电压采样、
* USB 在位判定由调用方(app_power)负责,保持单向依赖。
* 低电告警迟滞(app_power.c 里的 check_low/check_empty)不受本模块
* 影响,两者各管一段:本模块只负责"电量数字怎么变得好看",低电告警/
* 深睡门限仍按原始电压判断。
******************************************************************************/
#ifndef __APP_BATTERY_H__
#define __APP_BATTERY_H__
#include <stdint.h>
/*========================= 功能配置 =========================*/
/** 充电末期自动 +1% 模式:解决充电曲线末期长时间平台期、电量显示卡住的问题;
* 是否需要取决于实测充电曲线,先关掉,确认卡电量再打开 */
#define APP_BATTERY_AUTO_INCREMENT_EN 0
/**
* @brief 初始化电量模块状态(含充放电基准,不做持久化,每次重启重新学习)
* @return 无
*/
void app_battery_init(void);
/**
* @brief 按最新采样电压推进电量算法
* @param dt 距上次调用的毫秒数
* @param mv 本次采样均值电压,单位 mV(由调用方滑动平均后传入)
* @param charging 1=充电中(USB 在位),0=放电
* @return 无
*/
void app_battery_tick(uint16_t dt, uint16_t mv, uint8_t charging);
/**
* @brief 查询当前显示用电量百分比(已做防抖/缓冲平滑,非原始电压换算值)
* @return 0~100
*/
uint8_t app_battery_get_percent(void);
/**
* @brief 外部强制刷新电量(例如硬件判定充满后收尾到 100%),立即生效不走缓冲
* @note 充电场景下曲线拟合可能因基准/温漂等原因走不到 100% 就被充电芯片
* 判满,靠这个接口兜底,避免显示卡在 98%/99% 不动
* @param percent 目标百分比,超过 100 会被钳到 100
* @return 无
*/
void app_battery_set_percent(uint8_t percent);
#endif /* __APP_BATTERY_H__ */