V1.5: 欢迎页改'4路继电器控制终端/V1.5.0 RTOS';修复4G阻塞建链期间屏幕不显示联网进度(bg_delay挂调度器前刷新钩子)

This commit is contained in:
helei 2026-08-15 07:27:30 +08:00
parent 6e98017248
commit b81958535d
3 changed files with 16 additions and 2 deletions

View File

@ -148,6 +148,7 @@ void bg_delay(uint32_t ms)
while (ms >= 20) { while (ms >= 20) {
HAL_Delay(20); HAL_Delay(20);
IWDG_Feed(); IWDG_Feed();
app_oled_presched_tick(); /* 阻塞建链期间刷新屏幕联网进度 */
ms -= 20; ms -= 20;
} }
if (ms) HAL_Delay(ms); if (ms) HAL_Delay(ms);

View File

@ -98,8 +98,8 @@ void app_init(void)
/* OLED 屏幕128x64 + GB2312 字库 IC */ /* OLED 屏幕128x64 + GB2312 字库 IC */
oled_init(); oled_init();
oled_locate(1, 2); oled_print("智能控制器"); oled_locate(1, 0); oled_print("4路继电器控制终端");
oled_locate(2, 2); oled_print("V" FIRMWARE_VERSION_STR); oled_locate(2, 2); oled_print("V" FIRMWARE_VERSION_STR " RTOS");
log_info("> OLED: 初始化完成"); log_info("> OLED: 初始化完成");
/* 网络模块初始化:按 EEPROM 记忆的上次成功方式优先4G 或 WiFi */ /* 网络模块初始化:按 EEPROM 记忆的上次成功方式优先4G 或 WiFi */
@ -202,6 +202,18 @@ static void app_task(void *arg)
* ///+ * ///+
* g_net_ui_phase 4G/WiFi WiFi * g_net_ui_phase 4G/WiFi WiFi
* 10s 0/2/4px ====*/ * 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) static void oled_home_refresh(uint32_t up_ms)
{ {
char buf[24]; char buf[24];

View File

@ -4,6 +4,7 @@
/* FreeRTOS 任务调度封装 */ /* FreeRTOS 任务调度封装 */
void app_init(void); /* 业务模块初始化(横幅/外设/网络/串口接收) */ void app_init(void); /* 业务模块初始化(横幅/外设/网络/串口接收) */
void app_rtos_start(void); /* 创建任务并启动调度器(不再返回) */ void app_rtos_start(void); /* 创建任务并启动调度器(不再返回) */
void app_oled_presched_tick(void); /* 调度器启动前阻塞建链期间的屏幕进度刷新bg_delay 调用500ms 节流) */
/* 存储总线互斥EEPROM 软件I2C 与 W25Q64 软件SPI 跨任务共用) */ /* 存储总线互斥EEPROM 软件I2C 与 W25Q64 软件SPI 跨任务共用) */
void storage_lock_init(void); void storage_lock_init(void);