소스 검색

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 )