fix(rs485): 修复死循环导致地感不工作

根因:
1. rs485_send() 中 while(R8_UART0_TFC == 0) 逻辑反了
   TFC=0 表示 FIFO 空, ==0 时条件永真 → 死循环卡死主循环
   修复: ==0 → !=0 (等 FIFO 空再写下一字节)

2. rs485_init() 从未被调用
   gpio_uart_init() 仅写了注释, 未实际调用 → UART0/GPIO 未初始化
   修复: 替换注释为实际函数调用

3. 首次心跳立即触发
   _hb_last_ms 静态初始化为 0 → 首次 poll 立即发心跳
   修复: rs485_init() 末尾 _hb_last_ms = mstick()
This commit is contained in:
wangfq
2026-07-24 09:06:51 +08:00
parent db234bad1b
commit cd42b75f53
2 changed files with 4 additions and 3 deletions
@@ -392,7 +392,7 @@ void tm_init(void){
void gpio_uart_init(void)
{
/*--- RS485 通信 (PA14=TX, PA15=RX, PA13=RE) ---*/
/* 由 rs485_init() 统一初始化 UART0 + GPIO + 中断 */
rs485_init(); /* 初始化 UART0 + GPIO + 中断 */
/*--- 光耦输入 (PB10=IN_1) ---*/
/* 逻辑待定, 仅初始化引脚为输入上拉 */