diff --git a/BLE/DLD154Pro_Peripheral_28K/APP/peripheral_main.c b/BLE/DLD154Pro_Peripheral_28K/APP/peripheral_main.c index a5933fd..56f6339 100644 --- a/BLE/DLD154Pro_Peripheral_28K/APP/peripheral_main.c +++ b/BLE/DLD154Pro_Peripheral_28K/APP/peripheral_main.c @@ -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) ---*/ /* 逻辑待定, 仅初始化引脚为输入上拉 */ diff --git a/BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c b/BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c index e5d55d0..4368dd6 100644 --- a/BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c +++ b/BLE/DLD154Pro_Peripheral_28K/APP/rs485_700bs.c @@ -60,6 +60,7 @@ void rs485_init(void) PFIC_EnableIRQ(UART0_IRQn); RS485_RE_RX(); // 默认接收模式 + _hb_last_ms = mstick(); // 对齐心跳起始时刻,避免首次立即触发 PRINT("RS485: init ok, addr=%d, baud=%d\n", g_rs485_id, RS485_BAUD); } @@ -72,10 +73,10 @@ static void rs485_send(const uint8_t *data, uint8_t len) mDelayuS(100); // 总线稳定 for (uint8_t i = 0; i < len; i++) { - while (R8_UART0_TFC == 0); // 等 TX FIFO 空 + while (R8_UART0_TFC != 0); // 等 TX FIFO 空 (上一字节发完) R8_UART0_THR = data[i]; } - while (R8_UART0_TFC == 0); // 等最后一字节发完 + while (R8_UART0_TFC != 0); // 等最后一字节发完 mDelayuS(500); // 等待停止位 + 总线释放 UART0_CLR_TXFIFO(); RS485_RE_RX();