From 880a83ca02843816abb2c807327c7b2bbbdd0ed8 Mon Sep 17 00:00:00 2001 From: helei Date: Sat, 22 Aug 2026 11:47:38 +0800 Subject: [PATCH] =?UTF-8?q?V1.5:=20=E6=92=A4=E6=8E=89485=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=89=8D=E7=9A=84=E7=A1=AC=E4=BB=B6=E5=A4=8D=E4=BD=8D(AbortRec?= =?UTF-8?q?eive=E4=BC=9A=E6=8A=8A=E6=8E=A5=E6=94=B6=E6=90=9E=E6=AD=BB),?= =?UTF-8?q?=E6=94=B9=E5=8F=AA=E6=B8=85=E8=BD=AF=E4=BB=B6=E7=BC=93=E5=86=B2?= =?UTF-8?q?,=E6=8E=A5=E6=94=B6=E6=81=A2=E5=A4=8D=E5=B8=B8=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HardWare/FEED_SCALE/feed_scale.c | 3 +-- V1.5/STM32F103_App1/HardWare/UART/uart.c | 19 +++++-------------- V1.5/STM32F103_App1/HardWare/UART/uart.h | 2 +- V1.5/版本说明.md | 2 ++ 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c b/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c index 419dec6..c8d04b6 100644 --- a/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c +++ b/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c @@ -148,9 +148,8 @@ static int feed_scale_parse_weight(const uint8_t *buf, uint16_t len, uint16_t *w /* ͨ USART2 485 ѯ */ static void feed_scale_send_query(void) { - USART2_ForceRxReset(); /* 建+عҽգֹǰβ״̵̬Ӧ */ + USART2_FlushRxBuf(); /* ֻ壨/Ӳճ */ HAL_UART_Transmit(&huart2, (uint8_t *)RS485_WEIGHT_CMD, sizeof(RS485_WEIGHT_CMD), 100); - /* Ӧĺϲ֡ɽ֡ͷ */ } /* ȡ 485 ֡ */ diff --git a/V1.5/STM32F103_App1/HardWare/UART/uart.c b/V1.5/STM32F103_App1/HardWare/UART/uart.c index 2bcf779..240b46d 100644 --- a/V1.5/STM32F103_App1/HardWare/UART/uart.c +++ b/V1.5/STM32F103_App1/HardWare/UART/uart.c @@ -262,23 +262,14 @@ void USART2_StartRx(void) HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); } -/* ǿƸλ USART2 գ־/岢¹жϽա - * 485 ѯǰáORE ȴ HAL ״̬عҲ - * RxState READY ĬʧܣλĻ֮Ӧղ */ -void USART2_ForceRxReset(void) +/* USART2 ջ壨Ӳ + * 485 ѯǰãĻ/Ӧ֡Ӹɾ״̬ʼ + * ע⣺Ҫ AbortReceive/عжϡʵѽո + * Ӳմӿ𳣿ISR ֽع + ORE Ҫ */ +void USART2_FlushRxBuf(void) { - __HAL_UART_CLEAR_OREFLAG(&huart2); - __HAL_UART_CLEAR_PEFLAG(&huart2); - __HAL_UART_CLEAR_FEFLAG(&huart2); - __HAL_UART_CLEAR_NEFLAG(&huart2); - __HAL_UART_CLEAR_IDLEFLAG(&huart2); - huart2.ErrorCode = HAL_UART_ERROR_NONE; - if (huart2.RxState != HAL_UART_STATE_READY) { - HAL_UART_AbortReceive(&huart2); - } uart2_rx_ready = 0; uart2_cmd_index = 0; - HAL_UART_Receive_IT(&huart2, &uart2_rx_byte, 1); } /* USART2 ջȡһ֡20ms ֽڽ֡ȣ0 ʾ֡ */ diff --git a/V1.5/STM32F103_App1/HardWare/UART/uart.h b/V1.5/STM32F103_App1/HardWare/UART/uart.h index faf2bcc..bae14ba 100644 --- a/V1.5/STM32F103_App1/HardWare/UART/uart.h +++ b/V1.5/STM32F103_App1/HardWare/UART/uart.h @@ -36,7 +36,7 @@ void USART2_StartRx(void); /* void UART5_StartRx(void); /* UART5 жϽգHLW8032 */ void USART2_Tick(void); /* USART2 ֡ʱԶύ */ uint16_t USART2_GetFrame(uint8_t *out, uint16_t out_size); -void USART2_ForceRxReset(void); /* ǿƸλ USART2 գ485 ѯǰã */ /* USART2 ȡһ֡ԭʼֽ */ +void USART2_FlushRxBuf(void); /* USART2 ջ壨485 ѯǰãӲ */ /* USART2 ȡһ֡ԭʼֽ */ int USART1_CheckCommand(const char *cmd); /* ǷյָִСд */ const char *USART1_GetCommand(void); /* ȡǰյַ */ diff --git a/V1.5/版本说明.md b/V1.5/版本说明.md index f13ecf5..5d18030 100644 --- a/V1.5/版本说明.md +++ b/V1.5/版本说明.md @@ -188,3 +188,5 @@ 改为回声帧按内容识别静默丢弃(与查询命令完全一致的帧),合并帧靠 01 03 04 帧头搜索解析 - 485 首次查询延迟 3s(避开上电窗口,防止首个应答被开机繁忙期撞坏) - 485 查询日志增强:查询发出 1s 无任何应答帧打 WARN(无应答),有应答则原有 hex/解析日志覆盖 +- 撤掉 485 查询前的 ForceRxReset(AbortReceive 重挂会把接收搞死,只收到应答最后一个字节); + 改为只清软件缓冲不动硬件,接收回到最初常开方式;帧头搜索/回声识别/无应答日志保留