From 3647d0fb14de1ca3dfcb288b470627bd0e297acd Mon Sep 17 00:00:00 2001 From: helei Date: Sat, 15 Aug 2026 00:35:02 +0800 Subject: [PATCH] =?UTF-8?q?V1.5:=20=E7=94=B5=E8=83=BD=E6=97=A5=E5=BF=97/?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=94=B9=E4=B8=BA=E6=AF=8F10s=E4=B8=80?= =?UTF-8?q?=E6=9D=A1(ENERGY=5FREPORT=5FINTERVAL=5FMS=E5=AE=8F)=EF=BC=8C?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=97=B6=E9=97=B4=E4=BB=8D60s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- V1.5/STM32F103_App1/HardWare/LOG/log_cn.c | 2 +- V1.5/STM32F103_App1/HardWare/LOG/log_cn.h | 2 +- .../HardWare/SYSINIT/app_loop.c | 37 ++++++++++--------- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/V1.5/STM32F103_App1/HardWare/LOG/log_cn.c b/V1.5/STM32F103_App1/HardWare/LOG/log_cn.c index 4001fac..ea27996 100644 --- a/V1.5/STM32F103_App1/HardWare/LOG/log_cn.c +++ b/V1.5/STM32F103_App1/HardWare/LOG/log_cn.c @@ -3,4 +3,4 @@ /* 本文件为 UTF-8 编码:ARMCC 原样输出字符串字面量的字节, * 串口收到即为 UTF-8(串口工具编码选 UTF-8 即可正确显示中文) */ const char FMT_UPTIME[] = "> 运行时间: %u天--%02u小时--%02u分钟"; -const char FMT_UPTIME_EN[] = "> 运行时间: %u天--%02u小时--%02u分钟 电能: %.2fkWh 电压: %.1fV 电流: %.2fA 功率: %.1fW"; +const char FMT_ENERGY[] = "> 电能: %.2fkWh 电压: %.1fV 电流: %.2fA 功率: %.1fW"; diff --git a/V1.5/STM32F103_App1/HardWare/LOG/log_cn.h b/V1.5/STM32F103_App1/HardWare/LOG/log_cn.h index 1c3c1cf..11334d4 100644 --- a/V1.5/STM32F103_App1/HardWare/LOG/log_cn.h +++ b/V1.5/STM32F103_App1/HardWare/LOG/log_cn.h @@ -3,6 +3,6 @@ /* 中文日志格式串(UTF-8 编码,定义在 log_cn.c —— 串口工具编码选 UTF-8 即可正确显示) */ extern const char FMT_UPTIME[]; /* "> 运行时间: %u天--%02u小时--%02u分钟" */ -extern const char FMT_UPTIME_EN[]; /* 运行时间 + 电能 */ +extern const char FMT_ENERGY[]; /* 电能 + 电压/电流/功率 */ #endif /* LOG_CN_H */ diff --git a/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c b/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c index 56525dc..53cf0d3 100644 --- a/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c +++ b/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c @@ -191,6 +191,9 @@ static void app_task(void *arg) } } +/* 电能日志/上报间隔:想改频率就改这个宏(单位 ms) */ +#define ENERGY_REPORT_INTERVAL_MS 10000u + /*==== sys_task:系统辅助(LED/电量/蓝牙命令/运行时长)====*/ static void sys_task(void *arg) { @@ -198,6 +201,7 @@ static void sys_task(void *arg) uint32_t batt_tick = HAL_GetTick(); uint32_t up_last = HAL_GetTick(); uint32_t up_print = HAL_GetTick(); + uint32_t en_print = HAL_GetTick(); uint64_t up_ms = 0; for (;;) { @@ -229,27 +233,26 @@ static void sys_task(void *arg) up_print = now; if (g_net_mqtt_ready) { uint32_t mins = (uint32_t)(up_ms / 60000); - if (hlw8032_online()) { - /* 每分钟随心跳上报一次累计电量(标识符 energy),日志同步显示 */ - float kwh = hlw8032_get_energy_kwh(); - NET_publish_energy(kwh); - log_info(FMT_UPTIME_EN, - (unsigned)(mins / 1440), - (unsigned)((mins % 1440) / 60), - (unsigned)(mins % 60), (double)kwh, - (double)hlw8032_get_voltage_v(), - (double)hlw8032_get_current_a(), - (double)hlw8032_get_power_w()); - } else { - log_info(FMT_UPTIME, - (unsigned)(mins / 1440), - (unsigned)((mins % 1440) / 60), - (unsigned)(mins % 60)); - } + log_info(FMT_UPTIME, + (unsigned)(mins / 1440), + (unsigned)((mins % 1440) / 60), + (unsigned)(mins % 60)); } } } + /* 电能日志+上报:联网且计量芯片在线时每 ENERGY_REPORT_INTERVAL_MS 一条 */ + if (g_net_mqtt_ready && hlw8032_online() && + (HAL_GetTick() - en_print) >= ENERGY_REPORT_INTERVAL_MS) { + en_print = HAL_GetTick(); + float kwh = hlw8032_get_energy_kwh(); + NET_publish_energy(kwh); + log_info(FMT_ENERGY, (double)kwh, + (double)hlw8032_get_voltage_v(), + (double)hlw8032_get_current_a(), + (double)hlw8032_get_power_w()); + } + vTaskDelay(20); } }