ソースを参照

Fix receiving interrupt caused by sending state machine not exiting, resulting in receiving state machine assertion error

ZengJianwei 1 年間 前
コミット
18b2228605
2 ファイル変更2 行追加2 行削除
  1. 1 1
      modbus/rtu/mbrtu.c
  2. 1 1
      modbus/rtu/mbrtu_m.c

+ 1 - 1
modbus/rtu/mbrtu.c

@@ -307,8 +307,8 @@ xMBRTUTransmitFSM( void )
             xNeedPoll = xMBPortEventPost( EV_FRAME_SENT );
             /* Disable transmitter. This prevents another transmit buffer
              * empty interrupt. */
-            vMBPortSerialEnable( TRUE, FALSE );
             eSndState = STATE_TX_IDLE;
+            vMBPortSerialEnable( TRUE, FALSE );
         }
         break;
     }

+ 1 - 1
modbus/rtu/mbrtu_m.c

@@ -325,8 +325,8 @@ xMBMasterRTUTransmitFSM( void )
             xFrameIsBroadcast = ( ucMasterRTUSndBuf[MB_SER_PDU_ADDR_OFF] == MB_ADDRESS_BROADCAST ) ? TRUE : FALSE;
             /* Disable transmitter. This prevents another transmit buffer
              * empty interrupt. */
-            vMBMasterPortSerialEnable( TRUE, FALSE );
             eSndState = STATE_M_TX_XFWR;
+            vMBMasterPortSerialEnable( TRUE, FALSE );
             /* If the frame is broadcast ,master will enable timer of convert delay,
              * else master will enable timer of respond timeout. */
             if ( xFrameIsBroadcast == TRUE )