首先,在使能modbus协议栈的时候,会调用pvMBFrameStartCur函数
/* 使能modbus */
eMBErrorCode eMBEnable(void)
{
eMBErrorCode eStatus = MB_ENOERR;
/* modbus还未使能 */
if(eMBState == STATE_DISABLED)
{
/* 启动modbus */
pvMBFrameStartCur();
/* 设置modbus状态为使能 */
eMBState = STATE_ENABLED;
}
else
{
/* 状态不合法 */
eStatus = MB_EILLSTATE;
}
return eStatus;
}
在rtu模式下pvMBFrameStartCur指针指向eMBRTUStart函数
/* 启动modbus rtu */
void eMBRTUStart(void)
{
ENTER_CRITICAL_SECTION();
/* 接收状态设置为接收初始化 */
eRcvState = STATE_RX_INIT;
/* 串口打开接收、关闭发送 */
vMBPortSerialEnable(TRUE, FALSE);
/* 打开超时定时器 */
vMBPortTimersEnable();
EXIT_CRITICAL_SECTION();
}
<