#include "CanCycleSend_app.h" #include "CanApp.h" #include "user.h" #include "eeprom_app.h" #include "mode_key.h" //INT16U Can1MsgTxCyclicCounter[12]; //qiuadd INT16U Can1MsgTxCyclicCounter[26]; //INT16U Can1MsgTxTimer[12]; //qiuadd INT16U Can1MsgTxTimer[26]; void Can1_CommunicationInit(void) { for(int i=0;i<26;i++) { Can1MsgTxCyclicCounter[i] = 0; Can1MsgTxTimer[i] = FOREMOST_TIME; } for(int i=0;i<26;i++) { Can1MsgTxCyclicCounter[i] = CycleTime_22NID[i]; } CAN_AppUpdata_time = FOREMOST_TIME; UserCanRxSignal.CycleSendEnable_flg =1; ModeKey_Init(); } CanTxMsg TxMsg; //extern uint8_t one_cycle_pedal_flag; u8 errorstate; u8 ID230cnt; u8 ID231cnt; u8 ID232cnt; u8 ID233cnt; void Can1_CommunicationTask(void) { INT32U Can_ID; ModeKey_Task(); for(int i=0;i<26;i++) { if(Can1MsgTxCyclicCounter[i] != CycleTime_22NID[i]) { Can1MsgTxCyclicCounter[i] = CycleTime_22NID[i]; Can1MsgTxTimer[i] = FOREMOST_TIME; } } if(UserCanRxSignal.CycleSendEnable_flg==1) { MC_Broadcast_Update(); if (Get1MsTickInterval(Can1MsgTxTimer[0]) >= Can1MsgTxCyclicCounter[0]) { Can1MsgTxTimer[0] = Get1MsTickVal(); Can_ID = 0x18ff0200; write(h_can1, DateTxBroadcast.ID00, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[1]) >= Can1MsgTxCyclicCounter[1]) { Can1MsgTxTimer[1] = Get1MsTickVal(); Can_ID = 0x18ff0201; write(h_can1, DateTxBroadcast.ID01, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[2]) >= Can1MsgTxCyclicCounter[2]) { Can1MsgTxTimer[2] = Get1MsTickVal(); Can_ID = 0x18ff0202; write(h_can1, DateTxBroadcast.ID02, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[3]) >= Can1MsgTxCyclicCounter[3]) { Can1MsgTxTimer[3] = Get1MsTickVal(); Can_ID = 0x18ff0203; write(h_can1, DateTxBroadcast.ID03, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[4]) >= Can1MsgTxCyclicCounter[4]) { Can1MsgTxTimer[4] = Get1MsTickVal(); Can_ID = 0x18ff0204; write(h_can1, DateTxBroadcast.ID04, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[5]) >= Can1MsgTxCyclicCounter[5]) { Can1MsgTxTimer[5] = Get1MsTickVal(); Can_ID = 0x18ff0205; write(h_can1, DateTxBroadcast.ID05, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[6]) >= Can1MsgTxCyclicCounter[6]&&ID230cnt<5) { Can1MsgTxTimer[6] = Get1MsTickVal(); ID230cnt++; if(ID230cnt>5) ID230cnt=5; Can_ID = 0x18ff0230; write(h_can1, DateTxBroadcast.ID06, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[7]) >= Can1MsgTxCyclicCounter[7]&&ID231cnt<5) { Can1MsgTxTimer[7] = Get1MsTickVal(); ID231cnt++; if(ID231cnt>5) ID231cnt=5; Can_ID = 0x18ff0231; write(h_can1, DateTxBroadcast.ID07, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[8]) >= Can1MsgTxCyclicCounter[8]&&ID232cnt<5) { Can1MsgTxTimer[8] = Get1MsTickVal(); ID232cnt++; if(ID232cnt>5) ID232cnt=5; Can_ID = 0x18ff0232; write(h_can1, DateTxBroadcast.ID08, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[9]) >= Can1MsgTxCyclicCounter[9]&&ID233cnt<5) { Can1MsgTxTimer[9] = Get1MsTickVal(); ID233cnt++; if(ID233cnt>5) ID233cnt=5; Can_ID = 0x18ff0233; write(h_can1, DateTxBroadcast.ID09, 8, &Can_ID); } // if (Get1MsTickInterval(Can1MsgTxTimer[10]) >= Can1MsgTxCyclicCounter[10]) // { // Can1MsgTxTimer[10] = Get1MsTickVal(); // Can_ID = 0x18ff0240; // write(h_can1, DateTxBroadcast.ID10, 8, &Can_ID); // } // // if (Get1MsTickInterval(Can1MsgTxTimer[11]) >= Can1MsgTxCyclicCounter[11]) // { // Can1MsgTxTimer[11] = Get1MsTickVal(); // Can_ID = 0x18ff0241; // write(h_can1, DateTxBroadcast.ID11, 8, &Can_ID); // } // // if (Get1MsTickInterval(Can1MsgTxTimer[12]) >= Can1MsgTxCyclicCounter[12]) // { // Can1MsgTxTimer[12] = Get1MsTickVal(); // Can_ID = 0x18ff0242; // write(h_can1, DateTxBroadcast.ID12, 8, &Can_ID); // } // // if (Get1MsTickInterval(Can1MsgTxTimer[13]) >= Can1MsgTxCyclicCounter[13]) // { // Can1MsgTxTimer[13] = Get1MsTickVal(); // Can_ID = 0x18ff0243; // write(h_can1, DateTxBroadcast.ID13, 8, &Can_ID); // } // 0x18FF0101、0x18FF0108~0x18FF010C 为VCU接收触发帧,不再周期发送。 if (Get1MsTickInterval(Can1MsgTxTimer[20]) >= Can1MsgTxCyclicCounter[20]) { Can1MsgTxTimer[20] = Get1MsTickVal(); Can_ID = 0x18ff0600; write(h_can1, DateTxBroadcast.ID20, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[21]) >= Can1MsgTxCyclicCounter[21]) { Can1MsgTxTimer[21] = Get1MsTickVal(); Can_ID = 0x18ff0601; write(h_can1, DateTxBroadcast.ID21, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[22]) >= Can1MsgTxCyclicCounter[22]) { Can1MsgTxTimer[22] = Get1MsTickVal(); Can_ID = 0x18ff0250; write(h_can1, DateTxBroadcast.ID22, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[23]) >= Can1MsgTxCyclicCounter[23]) { Can1MsgTxTimer[23] = Get1MsTickVal(); Can_ID = 0x18ff0260; write(h_can1, DateTxBroadcast.ID23, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[24]) >= Can1MsgTxCyclicCounter[24]) { Can1MsgTxTimer[24] = Get1MsTickVal(); Can_ID = 0x18ff0261; write(h_can1, DateTxBroadcast.ID24, 8, &Can_ID); } if (Get1MsTickInterval(Can1MsgTxTimer[25]) >= Can1MsgTxCyclicCounter[25]) { Can1MsgTxTimer[25] = Get1MsTickVal(); Can_ID = 0x18ff0262; write(h_can1, DateTxBroadcast.ID25, 8, &Can_ID); } uint8_t error_code = CAN_GetLastErrorCode(CAN1); if (error_code != CAN_ErrorCode_NoErr) { // 有错误,查看错误码 errorstate=error_code; } } else { for(int i=0;i<26;i++) { Can1MsgTxTimer[i] = FOREMOST_TIME; } } }