/* * @Author : ChenJie * @Date : 2021-11-25 15:36:06 * @Version : V3.0 * @LastEditors : ChenJie * @LastEditTime : 2022-05-10 19:04:08 * @Description : file content * @FilePath : \VehicleControl\VehicleControl\src\System\Vehicle\VehCo.c */ /******************************************************************************** * 常州易控汽车电子股份有限公司 * (c) Copyright 2009-2015 ECTEK * 保留所有权利 ******************************************************************************** * 工程名称:整车管理 * 文件名: VehCo.c * 功能描述 : 整车管理协调 * 引用记录: * 备注: * 修订记录: * 日期 版本 作者 描述 * 2011.07.14 00.01.00 李中 第一版 *******************************************************************************/ #include "VehCo.h" #include "HardwareLib.h" #include "CANNet.h" #include "AccPedCD.h" #define APPLAYERVER_START_SEC_VAR #include "MemMap.h" const uint8 AppLayer_idxVerUBA[64] = "P156V102"; //应用层软件版本信息,可通过UDS接口读取 #define APPLAYERVER_STOP_SEC_VAR #include "MemMap.h" /*********************************************************************************************/ /*示例代码*/ #ifdef _SAMPLE_CODE_ #endif //_SAMPLE_CODE_ /*********************************************************************************************/ /*************************************************************/ /*标定数据区开始(请不要在该区域加入非标定数据相关的内容) */ #define MAPDATA_START_SEC_VAR_CONST #include "MemMap.h" /*VehCo*/ PRAGMA_MAPDATA const uint16 VehCo_bTestCANWuFinUW_C = 0; /*测试模式下控制CAN唤醒状态结束*/ PRAGMA_MAPDATA const uint16 VehCo_bTestCPCtrlUW_C = 0; /*CP下拉阻值选择测试操作*/ #define MAPDATA_STOP_SEC_VAR_CONST #include "MemMap.h" /*标定数据区结束 */ /*************************************************************/ #define _BOOTLOADER_EMBEDDED #ifdef _BOOTLOADER_EMBEDDED uint32 VehCo_pBootloaderUIP; #pragma section ".bootloader_entry" ax void Bootloader_Entry(void); #pragma section #endif //整车管理初始化 void VehCo_Init(void) { #ifdef _BOOTLOADER_EMBEDDED VehCo_pBootloaderUIP = (uint32)Bootloader_Entry; #endif /*********************************************************************************************/ /*示例代码*/ #ifdef _SAMPLE_CODE_ AccPedCD_Init(); // VehCo_uAccPedUW = 0; #endif //_SAMPLE_CODE_ /*********************************************************************************************/ CANNet_Init(); /*打开强电主继电器*/ PSwtDrv_Interface(_PSWT_INDEX_MAINRELAY_CHAN, 1); //打开蓝牙电源 PSwtDrv_Interface(_PSWT_INDEX_BLEPWRCONTROL, 1); } //整车管理10ms基准运行任务 void VehCo_Manage10ms(void) { /*********************************************************************************************/ /*样例代码*/ #ifdef _SAMPLE_CODE_ static UINT16 TimerMs = 0; TimerMs = TimerMs + 10; VehCo_Ctrl(); VcuRxDiagnose(); BcuRxDiagnose(); if (TimerMs % 100 == 0) { //FaultDiagnosisFunc();//此处有重启问题,待排查 } #endif //_SAMPLE_CODE_ /*********************************************************************************************/ } //整车管理1ms基准运行任务 void VehCo_Manage1ms(void) { CAN0Net_Manage1ms(); CAN1Net_Manage1ms(); CAN2Net_Manage1ms(); } //停机准备状态操作,10ms运行一次 uint8 VehCo_Afterrun(void) { uint8 stRetUB = 0; if (HardwareDrv_bBootloaderReqUB == 1) { //进入Bootloader烧写状态准备,将系统置于安全状态 { stRetUB = 1; } } else { //进入停机关电准备 /*样例代码*/ #ifdef _SAMPLE_CODE_ VehCo_Ctrl(); #endif //_SAMPLE_CODE_ { stRetUB = 1; } } return stRetUB; } /*********************************************************************************************/ /*样例代码*/ #ifdef _SAMPLE_CODE_ void VehCo_Ctrl(void) { /*在CAN唤醒的情况下,由上层算法决定CAN唤醒过程结束*/ if (BattCD_stWakeupU.B.bCAN == 1) { if (VehCo_bTestCANWuFinUW_C == 1) { BattCD_stWakeupU.B.bCAN = 0; } } /*正式程序开始*/ GetHVLockState(); GetDIOState(); GetAIOValue(); LockAndUnlockCtrl(); } #endif //_SAMPLE_CODE_ /*********************************************************************************************/