feat: 校准电池电压与ADC2充电检测,重构RGB为Bitbang翻转驱动,并修复RTC晶振起振问题

This commit is contained in:
2026-07-28 18:03:20 +08:00
parent 47bcd252b2
commit d01121e3ae
25 changed files with 15134 additions and 11463 deletions

View File

@@ -167,13 +167,15 @@ void main(void)
WDT_CONTR = 0x00; // 关闭看门狗定时器
// ====== 硬件各模块基础初始化 ======
GPIO_Init(); // 配置各个引脚的推挽输出/准双向模式及内部上拉
GPIO_Init(); // 配置各个引脚的推挽输出/准双向模式及内部上拉 (锁存 PWR_HOLD=1)
RGB_Send(0, 0, 0, 0, 0, 0); // 【首要修正】:上电第一时间强制发送 0 码关闭灯条,熄灭上电暂态引起的随机白光!
RF_Init(); // 初始化射频芯片各引脚控制
Delay_ms(500); // 软启动延时,等待供电电容稳定
LCD_Init(); // 初始化 LHS114TC-IF03 (ST7789V) 屏幕控制寄存器序列并开启背光
Uart1_Init(); // 初始化串口 1 波特率 115200 供调试日志
Uart_SendString("Wristband System Initialized!\r\n");
Self_Test(); // 执行上电硬件自检 (PWR_HOLD锁存、P0.3 ADC按键常态、P1.3 电池电量)
Load_Database(); // 从 IAP Flash 第 254 扇区读取所有已绑定的传感器数据至 RAM
/* 步骤 1: 初始化事件环形缓冲区队列 */
@@ -192,6 +194,12 @@ void main(void)
// ====== 主循环 ======
while (1) {
/* 0. 检查主循环按键定时标志 (由 1ms 中断置位,主循环响应清除并处理) */
if (key_scan_flag) {
key_scan_flag = 0;
Event_KeyScan_Poll();
}
/* 1. 串口非阻塞指令捕获 -> 装配为事件方式入队 */
cmd = Uart_RxChar();
if (cmd != '\0') {