V1.5: 欢迎页改'4路继电器控制终端/V1.5.0 RTOS';修复4G阻塞建链期间屏幕不显示联网进度(bg_delay挂调度器前刷新钩子)
This commit is contained in:
parent
6e98017248
commit
b81958535d
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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];
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue