⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 task_j1939.c

📁 在Freescale16位单片机MC9s12dp256上移植了J1939源码和操作系统(ucOSII)。
💻 C
📖 第 1 页 / 共 2 页
字号:
        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 + -