1. 花了几天时间基于lvgl8.3封装了lvgl_cpp,写了一些基本需要的控件,支持链式调用

还存在一点点bug,不难fix
2. 增加了中文字库,支持中文显示
3. 修复和优化了一些地方
This commit is contained in:
Misaki
2025-09-27 05:43:43 +08:00
parent a47e20cb64
commit 801138631e
18 changed files with 67398 additions and 36 deletions
+43
View File
@@ -114,4 +114,47 @@ float BAT_Get_Volts(void)
// printf("BAT voltage : %.2f V\r\n", BAT_analogVolts);
}
return BAT_analogVolts;
}
/**
* @brief 滞回锁定百分比(±1 % 死区)
* @param pct:实时算出的 0-100
* @retval 对外发布的稳定百分比
*/
int32_t BAT_Percent_Lock(int32_t pct)
{
static int32_t out = 0; // 上次对外值
if (pct >= out + 1) out = pct; // 上升门槛
if (pct <= out - 1) out = pct; // 下降门槛
return out;
}
static float lpf = 0.0f; // 上一次滤波结果
static bool first = true; // 首次赋值标志
float BAT_Get_Volts_Filtered(void)
{
float raw = BAT_Get_Volts(); // 你的原始函数
if (first) { lpf = raw; first = false; } // 第一次直接赋值
lpf = lpf + 0.05f * (raw - lpf); // α=0.05 越小刚越稳
return lpf;
}
/**
* @brief 返回电池剩余电量百分比(0~100)
* @note 基于 200 k + 100 k 分压,ADC 满量程 1.1 V
* @retval 0 已放空(≤ 3.0 V
* 100 满电(≥ 4.2 V) 这里给到4.1V 以放置电池达不到100%的电量
* 中间线性
*/
int32_t BAT_Get_Percent(void)
{
const float volts = BAT_Get_Volts_Filtered(); // 3.0 ~ 4.2 V -> 0 ~ 100 做映射
// 限幅
if (volts <= 3.0f) return 0;
if (volts >= 4.1f) return 100;
// 滞回比较器 + 线性映射
return BAT_Percent_Lock((int32_t)((volts - 3.0f) / (4.2f - 3.0f) * 100.0f + 0.5f)); // +0.5 四舍五入
}