FreeModbus_Slave-Master-RTT-STM32
FreeModbus_Slave-Master-RTT-STM32 copied to clipboard
xMBMasterRTUTransmitFSM函数触发断言
原代码如下: vMBMasterPortSerialEnable( TRUE, FALSE ); eSndState = STATE_M_TX_XFWR; 这种情况会在接收函数xMBMasterRTUReceiveFSM()触发断言 RT_ASSERT(( eSndState == STATE_M_TX_IDLE ) || ( eSndState == STATE_M_TX_XFWR ));
修改如下解决: eSndState = STATE_M_TX_XFWR; vMBMasterPortSerialEnable( TRUE, FALSE ); //eSndState = STATE_M_TX_XFWR;
问题原因是状态更新不及时,接收中断触发了,变量状态还没有更新,所以还要提前 不过我不知道原作者和其他用户是否遇到这种问题,所以抛砖引玉,armink看到也请分析一下,谢谢
上面改法也是存在问题的,虽然可以正常写,但是返回值错误
遇到了同样的问题,这个问题的复现调试是 从机延时响应,例如我用 modbus slave 这个上位机
那么就会触发这个断言