📄 task_j1939.c
字号:
gCB_Init();
J1939StartupInit(); /* initialize J1939 protocol stack */
J1939Reset();
bootStep++;
}
if(bootStep == 1)
{
if(J1939AddressClaiming(&gDeviceAddress)) /* Get device address */
{
bootStep = 3;
}
else
{
if(gDeviceAddress == J1939NULLADDRESS)
{
/* we lost Adress claiming - jump to user defined state */
bootStep = 2;
}
}
}
if(bootStep == 2)
{
/* [USER DEPENDENT] */ /* please handle here the lost of the adress claiming e.g.
change default EEPROM address */
gJ1939BootUp = FALSE; /* NOTE: this is only a example ! */
/* here we stop the boot sequence and wait for commands from network */
}
if(bootStep == 3)
{
if (gAddressClaimed)
{
/* Now the device address is valid */
InitUserPGs(); /* Initialize the PG used by the application */
/* allocating RX user PG buffer */
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FE10],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FE10].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_FE10].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FE10].mEnable = FALSE; /* Disable PG */
}
/* allocating RX user PG buffer */
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FF17],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FF17].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_FF17].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FF17].mEnable = FALSE; /* Disable PG */
}
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FE30],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FE30].mEnable = TRUE; /* Enable PG */
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FE30].mEnable = FALSE; /* Disable PG */
}
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_CC00],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_CC00].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_CC00].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_CC00].mEnable = FALSE; /* Disable PG */
}
/* Register Tx PG to the CAN controller */
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_CB00],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_CB00].mEnable = TRUE; /* Enable PG */
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_CB00].mEnable = FALSE; /* Disable PG */
}
//-------------------------------------
/* allocating RX user PG buffer ----F004*/
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_F004],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_F004].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_F004].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_F004].mEnable = FALSE; /* Disable PG */
}
/* allocating RX user PG buffer ----FEEF*/
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FEEF],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FEEF].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_FEEF].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FEEF].mEnable = FALSE; /* Disable PG */
}
/* allocating RX user PG buffer ----FEEE*/
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FEEE],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FEEE].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_FEEE].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FEEE].mEnable = FALSE; /* Disable PG */
}
/* allocating RX user PG buffer ----FEC0*/
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FEC0],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FEC0].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_FEC0].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FEC0].mEnable = FALSE; /* Disable PG */
}
/* allocating RX user PG buffer ----FE6C*/
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FE6C],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FE6C].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_FE6C].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FE6C].mEnable = FALSE; /* Disable PG */
}
/* allocating RX user PG buffer ----FEE6*/
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FEE6],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FEE6].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_FEE6].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FEE6].mEnable = FALSE; /* Disable PG */
}
/* allocating RX user PG buffer ----FEC1*/
if (gCB_AllocBuffer(&gRxPGTable[RX_PGN_FEC1],RX_BUFF)!= INVAL_BUFFER)
{
/* [USER DEPENDENT] */
gRxPGTable[RX_PGN_FEC1].mEnable = TRUE; /* Enable PG */
gRxPGTable[RX_PGN_FEC1].mTimer = Tim_GetCurrentTime();
}
else
{
/* error, no buffer free */
/* [USER DEPENDENT] [NON PORTABLE] */
/* inform application */
gRxPGTable[RX_PGN_FEC1].mEnable = FALSE; /* Disable PG */
}
} /* if claimed */
gJ1939BootUp = FALSE;
timeStamp = Tim_GetCurrentTime();
bootStep = 0;
} /* if bootstep == 3 */
} /* if boot */
else
{
/* Do protocol stack */
J1939Stack(); /* Do J1939 */
}
/* Check bus state */
if (gCANBusOff)
{
/* [USER DEPENDENT] */
/* restart application */
}
else
{
/* CLR_LED_BUSOFF; */
}
# if ENABLE_CCP == 1
ccpBackground();
# endif
# ifdef DEBUG_TIMEANALYZE_MAINLOOP
DEBUG_TIMER_END; /* Only for time analyses */
# endif
OSTimeDly(1);
} /* while(1) */
}
void Task_J1939_Create(void)
{
#if OS_TASK_CREATE_EXT_EN==1
OSTaskCreateExt(Task_J1939,
(void*)0,
&Task_J1939_STK[OS_STK_DEFAULT_SIZE-1],
TASK_J1939_PRIO,
TASK_J1939_PRIO,
&Task_J1939_STK[0],
OS_STK_DEFAULT_SIZE,
(void*) 0,
OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);
#else
OSTaskCreate(Task_J1939,
(void*)0,
&Task_J1939_STK[OS_STK_DEFAULT_SIZE-1],
TASK_J1939_PRIO);
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -