From 2d7a5d7366a69c6551a7451dd78f29aef07f6c3e Mon Sep 17 00:00:00 2001 From: wangfq Date: Fri, 24 Jul 2026 10:04:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(rs485):=20=E9=A2=91=E7=8E=87=E6=94=B9?= =?UTF-8?q?=E7=94=A8=20loop1=5FCAPVD=EF=BC=8C=E7=BB=95=E8=BF=87=20flag=5Fc?= =?UTF-8?q?hange=20=E5=86=BB=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit g_loop_acs_info.loop_capvd 被 flag_change 门控: INIT_VD() / 车辆进出事件 → flag_change=1 → loop_capvd 冻结 flag_change 仅在 usart_packet_processing_acs_loop 清零 BLE 断开时 flag_change 永远不清零 → loop_capvd 永远不更新 改用 loop1_CAPVD (vd1_task 每次实时更新,不受 flag_change 影响) --- BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c b/BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c index e6638c6..540ff4f 100644 --- a/BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c +++ b/BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c @@ -90,10 +90,10 @@ static void rs485_send(const uint8_t *data, uint8_t len) /* 直接从原始测量值计算线圈频率 (Hz),不依赖 BLE 报告通道 */ static uint32_t rs485_get_freq(void) { - uint32_t capvd = g_loop_acs_info.loop_capvd; // TMR0 捕获累加值 - if (capvd == 0 || loop1_LPCNT == 0) return 0; - /* freq = FREQ_SYS / (capvd / LPCNT) + 360 (补偿值) */ - return (uint32_t)((uint64_t)FREQ_SYS * loop1_LPCNT / capvd) + 360; + extern uint32_t loop1_CAPVD; // vd1_task() 实时更新的 IIR 滤波值 + if (loop1_CAPVD == 0 || loop1_LPCNT == 0) return 0; + /* freq = FREQ_SYS / (CAPVD / LPCNT) + 360 (补偿值) */ + return (uint32_t)((uint64_t)FREQ_SYS * loop1_LPCNT / loop1_CAPVD) + 360; } /* 0xFA — 查询有车状态 + 线圈好坏 */