From b81958535d0d8ff75d5f8cbbc1d0ed0660d4940f Mon Sep 17 00:00:00 2001 From: helei Date: Sat, 15 Aug 2026 07:27:30 +0800 Subject: [PATCH] =?UTF-8?q?V1.5:=20=E6=AC=A2=E8=BF=8E=E9=A1=B5=E6=94=B9'4?= =?UTF-8?q?=E8=B7=AF=E7=BB=A7=E7=94=B5=E5=99=A8=E6=8E=A7=E5=88=B6=E7=BB=88?= =?UTF-8?q?=E7=AB=AF/V1.5.0=20RTOS';=E4=BF=AE=E5=A4=8D4G=E9=98=BB=E5=A1=9E?= =?UTF-8?q?=E5=BB=BA=E9=93=BE=E6=9C=9F=E9=97=B4=E5=B1=8F=E5=B9=95=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=81=94=E7=BD=91=E8=BF=9B=E5=BA=A6(bg=5Fdel?= =?UTF-8?q?ay=E6=8C=82=E8=B0=83=E5=BA=A6=E5=99=A8=E5=89=8D=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E9=92=A9=E5=AD=90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- V1.5/STM32F103_App1/HardWare/CAR/air780e.c | 1 + V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c | 16 ++++++++++++++-- V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.h | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/V1.5/STM32F103_App1/HardWare/CAR/air780e.c b/V1.5/STM32F103_App1/HardWare/CAR/air780e.c index 9c236f9..25ce6cd 100644 --- a/V1.5/STM32F103_App1/HardWare/CAR/air780e.c +++ b/V1.5/STM32F103_App1/HardWare/CAR/air780e.c @@ -148,6 +148,7 @@ void bg_delay(uint32_t ms) while (ms >= 20) { HAL_Delay(20); IWDG_Feed(); + app_oled_presched_tick(); /* 阻塞建链期间刷新屏幕联网进度 */ ms -= 20; } if (ms) HAL_Delay(ms); diff --git a/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c b/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c index 1a91a86..4f46475 100644 --- a/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c +++ b/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c @@ -98,8 +98,8 @@ void app_init(void) /* OLED 屏幕(128x64 + GB2312 字库 IC) */ oled_init(); - oled_locate(1, 2); oled_print("智能控制器"); - oled_locate(2, 2); oled_print("V" FIRMWARE_VERSION_STR); + oled_locate(1, 0); oled_print("4路继电器控制终端"); + oled_locate(2, 2); oled_print("V" FIRMWARE_VERSION_STR " RTOS"); log_info("> OLED: 初始化完成"); /* 网络模块初始化:按 EEPROM 记忆的上次成功方式优先(4G 或 WiFi) */ @@ -202,6 +202,18 @@ static void app_task(void *arg) * 已联网:电压电流/功率电能/开关状态/网络+运行时间 * 未联网:按 g_net_ui_phase 显示 4G/WiFi 联网进度(WiFi 带倒计时) * 防烧屏:每 10s 内容整体右移 0/2/4px 轮换 ====*/ +static void oled_home_refresh(uint32_t up_ms); + +/* 调度器启动前的阻塞建链阶段(app_init 里的 4G 初始化), + * sys_task 还没跑,由 bg_delay 每 500ms 调一次刷新联网进度页 */ +void app_oled_presched_tick(void) +{ + static uint32_t last = 0; + if (HAL_GetTick() - last < 500) return; + last = HAL_GetTick(); + oled_home_refresh(0); +} + static void oled_home_refresh(uint32_t up_ms) { char buf[24]; diff --git a/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.h b/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.h index 95dbaf5..f0836c2 100644 --- a/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.h +++ b/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.h @@ -4,6 +4,7 @@ /* FreeRTOS 任务调度封装 */ void app_init(void); /* 业务模块初始化(横幅/外设/网络/串口接收) */ void app_rtos_start(void); /* 创建任务并启动调度器(不再返回) */ +void app_oled_presched_tick(void); /* 调度器启动前阻塞建链期间的屏幕进度刷新(bg_delay 调用,500ms 节流) */ /* 存储总线互斥(EEPROM 软件I2C 与 W25Q64 软件SPI 跨任务共用) */ void storage_lock_init(void);