Browse Source

新建换电控制器,Src文件

CHENJIE-PC\QiXiang_CHENJIE 3 years ago
commit
16b0913669

+ 38 - 0
EOL/EOLData.c

@@ -0,0 +1,38 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2005~2017 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:底层驱动_内存资源管理
+* 文件名: EOLData.c
+* 功能描述 : EOL数据
+* 引用记录:
+* 发布记录:
+* 备注:
+* 修订记录:
+*       日期            版本          作者        描述
+*   2017.09.05   00.01.00    李中               第一版
+*******************************************************************************/
+
+#include "EOLData.h"
+
+
+/******************************************************************************************************
+ * EOL数据
+ ******************************************************************************************************/
+
+#define EOL_START_SEC_VAR
+#include "MemMap.h"
+    uint8 K2REI_VMVINUB_CA[_EOL_LEN_K2REI_VMVIN]="";  //整车编号(VIN)
+    uint8 K2REI_VMVehModelUB_CA[_EOL_LEN_K2REI_VMVIN]="";  //整车型号
+    uint8 K2REI_VMECUSWVERUB_CA[_EOL_LEN_K2REI_VMECUSWVER]="P036V100";  //客户定义的ECU软件版本
+    uint8 K2REI_VMECUHWNRUB_CA[_EOL_LEN_K2REI_VMECUHWNR]="EC6301V";  //ECU硬件号
+    uint8 K2REI_VMTESTERSNUB_CA[_EOL_LEN_K2REI_VMTESTERSN]="";  //Vehicle Manufacturer Repair Shop Code or Tester Serial Number
+    uint8 K2REI_VMPMDATEUB_CA[_EOL_LEN_K2REI_VMPMDATE]="";  //Vehicle Manufacturer Program Data
+    uint8 K2REI_VMEGTSTDATEUB_CA[_EOL_LEN_K2REI_VMEGTSTDATE]="";  //Vehicle Manufacturer Engine Test Date
+    uint8 K2REI_VMDSIDUB_CA[_EOL_LEN_K2REI_VMDSID]="";  //Vehicle Manufacturer Dataset Identification
+#define EOL_STOP_SEC_VAR
+#include "MemMap.h"
+
+/******************************************************************************************************/
+

+ 53 - 0
EOL/EOLData.h

@@ -0,0 +1,53 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2005~2017 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:底层驱动_内存资源管理
+* 文件名: EOLData.h
+* 功能描述 : EOL数据
+* 引用记录:
+* 发布记录:
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2017.09.05   00.01.00    李中               第一版
+*******************************************************************************/
+
+
+#ifndef __EOLDATA_H
+
+    #define __EOLDATA_H
+    
+    
+    #include "Std_Types.h"
+    
+    
+    #define _EOL_LEN_K2REI_VMVIN 34     //Vehicle Manufacturer Vehicle Identification Number
+    #define _EOL_LEN_K2REI_VMECUSWVER 64   //Vehicle Manufacturer ECU Software  Version
+    #define _EOL_LEN_K2REI_VMECUHWNR 16   //Vehicle Manufacturer ECU Hardware Number
+    #define _EOL_LEN_K2REI_VMTESTERSN 16 //Vehicle Manufacturer Repair Shop Code or Tester Serial Number
+    #define _EOL_LEN_K2REI_VMPMDATE 10  //Vehicle Manufacturer Program Data
+    #define _EOL_LEN_K2REI_VMEGTSTDATE 10  //Vehicle Manufacturer Engine Test Date
+    #define _EOL_LEN_K2REI_VMDSID 66  //Vehicle Manufacturer Dataset Identification
+
+    /******************************************************************************************************
+     * EOL数据
+     ******************************************************************************************************/
+
+    #define EOL_START_SEC_VAR
+    #include "MemMap.h"
+        extern uint8 K2REI_VMVINUB_CA[_EOL_LEN_K2REI_VMVIN];  //整车编号(VIN)
+        extern uint8 K2REI_VMVehModelUB_CA[_EOL_LEN_K2REI_VMVIN];  //整车型号
+        extern uint8 K2REI_VMECUSWVERUB_CA[_EOL_LEN_K2REI_VMECUSWVER];  //客户定义的ECU软件版本
+        extern uint8 K2REI_VMECUHWNRUB_CA[_EOL_LEN_K2REI_VMECUHWNR];  //ECU硬件号
+        extern uint8 K2REI_VMTESTERSNUB_CA[_EOL_LEN_K2REI_VMTESTERSN];  //Vehicle Manufacturer Repair Shop Code or Tester Serial Number
+        extern uint8 K2REI_VMPMDATEUB_CA[_EOL_LEN_K2REI_VMPMDATE];  //Vehicle Manufacturer Program Data
+        extern uint8 K2REI_VMEGTSTDATEUB_CA[_EOL_LEN_K2REI_VMEGTSTDATE];  //Vehicle Manufacturer Engine Test Date
+        extern uint8 K2REI_VMDSIDUB_CA[_EOL_LEN_K2REI_VMDSID];  //Vehicle Manufacturer Dataset Identification
+    #define EOL_STOP_SEC_VAR
+    #include "MemMap.h"
+
+    /******************************************************************************************************/
+
+#endif

+ 956 - 0
Global/MemMap.h

@@ -0,0 +1,956 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2005~2017 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:HardwareLib
+* 文件名: MemMap.h
+* 功能描述 : 内存映射设置
+* 引用记录:
+* 发布记录:
+* 备注:
+* 代码段
+*   Prefix_START(STOP)_SEC_CODE
+*   Prefix_START(STOP)_SEC_CALLOUT_CODE
+*   Prefix_START(STOP)_SEC_CODE_FAST_<NUM>
+*   Prefix_START(STOP)_SEC_CODE_SLOW
+*   Prefix_START(STOP)_SEC_CODE_LIB
+* 变量段
+*   Prefix_START(STOP)_SEC_VAR_NOINIT_<SIZE>
+*   Prefix_START(STOP)_SEC_VAR_POWER_ON_INIT_<SIZE>
+*   Prefix_START(STOP)_SEC_VAR_FAST_<SIZE>
+*   Prefix_START(STOP)_SEC__INTERNAL_VAR_<SIZE>
+*   Prefix_START(STOP)_SEC_VAR_SAVED_ZONE_<SIZE>
+*   Prefix_START(STOP)_SEC_VAR_SAVED_RECOVERY_<SIZE>
+*   Prefix_START(STOP)_SEC_VAR_<SIZE>
+* 常数段
+*   Prefix_START(STOP)_SEC_CONST_<SIZE>
+*   Prefix_START(STOP)_SEC_CALIB_<SIZE>
+*   Prefix_START(STOP)_SEC_CARTO_<SIZE>
+* 配置段
+*   Prefix_START(STOP)_SEC_CONFIG_DATA_<SIZE>
+* 修订记录:
+*       日期            版本          作者        描述
+*       2014.12.21        01.00.00    方成      第一版
+*******************************************************************************/
+
+
+/***********************AUTOSAR用户定义*************************/
+
+#if !defined(MEM_VENDOR_ID)
+    #define MEM_VENDOR_ID 1U /* 3SOFT GmbH */
+#endif
+
+
+
+/***********************以下为版本定义*************************/
+
+#if !defined(MEM_AR_RELEASE_MAJOR_VERSION)
+    #define MEM_AR_RELEASE_MAJOR_VERSION 4U
+#endif
+
+#if !defined(MEM_AR_RELEASE_MINOR_VERSION)
+    #define MEM_AR_RELEASE_MINOR_VERSION 0U
+#endif
+
+#if !defined(MEM_AR_RELEASE_REVISION_VERSION)
+    #define MEM_AR_RELEASE_REVISION_VERSION 0U
+#endif
+
+
+
+/***********************以下为软件版本定义*************************/
+#if !defined(MEM_SW_MAJOR_VERSION)
+    #define MEM_SW_MAJOR_VERSION 1U
+#endif
+
+#if !defined(MEM_SW_MINOR_VERSION)
+    #define MEM_SW_MINOR_VERSION 0U
+#endif
+
+#if !defined(MEM_SW_PATCH_VERSION)
+    #define MEM_SW_PATCH_VERSION 0U
+#endif
+
+
+
+/***********************以下为MEMMAP_ERROR定义*************************/
+#if defined(MEMMAP_ERROR)
+    #error MEMMAP_ERROR defined, wrong MemMap.h usage
+#endif
+
+#define MEMMAP_ERROR
+
+
+/***********************以下为对开发环境的定义*************************/
+#ifndef _HIGHTEC_TC2XX_
+    #define _HIGHTEC_TC2XX_
+#endif
+
+
+/***********************以下为各模块内存映射定义*************************/
+
+/*CODE*/
+/*CODE_FAST*/
+/*代码段*/
+#if defined ADC_START_SEC_CODE
+    #undef ADC_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_CODE
+    #undef ADC_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+
+#elif defined ADC_START_SEC_CODE_FAST
+    #undef ADC_START_SEC_CODE_FAST
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_CODE_FAST
+    #undef ADC_STOP_SEC_CODE_FAST
+    #undef MEMMAP_ERROR
+
+
+/*VAR_NOINIT,不需要初始化的变量*/
+#elif defined ADC_START_SEC_VAR_NOINIT_8BIT
+    #undef ADC_START_SEC_VAR_NOINIT_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_NOINIT_8BIT
+    #undef ADC_STOP_SEC_VAR_NOINIT_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_NOINIT_16BIT
+    #undef ADC_START_SEC_VAR_NOINIT_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_NOINIT_16BIT
+    #undef ADC_STOP_SEC_VAR_NOINIT_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_NOINIT_32BIT
+    #undef ADC_START_SEC_VAR_NOINIT_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_NOINIT_32BIT
+    #undef ADC_STOP_SEC_VAR_NOINIT_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_NOINIT_UNSPECIFIED
+    #undef ADC_START_SEC_VAR_NOINIT_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_NOINIT_UNSPECIFIED
+    #undef ADC_STOP_SEC_VAR_NOINIT_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*VAR_POWER_ON_INIT 上电后初始化的变量*/
+#elif defined ADC_START_SEC_VAR_POWER_ON_INIT_8BIT
+    #undef ADC_START_SEC_VAR_POWER_ON_INIT_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_POWER_ON_INIT_8BIT
+    #undef ADC_STOP_SEC_VAR_POWER_ON_INIT_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_POWER_ON_INIT_16BIT
+    #undef ADC_START_SEC_VAR_POWER_ON_INIT_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_POWER_ON_INIT_16BIT
+    #undef ADC_STOP_SEC_VAR_POWER_ON_INIT_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_POWER_ON_INIT_32BIT
+    #undef ADC_START_SEC_VAR_POWER_ON_INIT_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_POWER_ON_INIT_32BIT
+    #undef ADC_STOP_SEC_VAR_POWER_ON_INIT_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED
+    #undef ADC_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED
+    #undef ADC_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*VAR_FAST,经常使用的变量*/
+#elif defined ADC_START_SEC_VAR_FAST_8BIT
+    #undef ADC_START_SEC_VAR_FAST_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_FAST_8BIT
+    #undef ADC_STOP_SEC_VAR_FAST_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_FAST_16BIT
+    #undef ADC_START_SEC_VAR_FAST_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_FAST_16BIT
+    #undef ADC_STOP_SEC_VAR_FAST_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_FAST_32BIT
+    #undef ADC_START_SEC_VAR_FAST_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_FAST_32BIT
+    #undef ADC_STOP_SEC_VAR_FAST_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_FAST_UNSPECIFIED
+    #undef ADC_START_SEC_VAR_FAST_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_FAST_UNSPECIFIED
+    #undef ADC_STOP_SEC_VAR_FAST_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*VAR,每次复位都初始化的变量*/
+#elif defined ADC_START_SEC_VAR_8BIT
+    #undef ADC_START_SEC_VAR_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_8BIT
+    #undef ADC_STOP_SEC_VAR_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_16BIT
+    #undef ADC_START_SEC_VAR_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_16BIT
+    #undef ADC_STOP_SEC_VAR_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_32BIT
+    #undef ADC_START_SEC_VAR_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_32BIT
+    #undef ADC_STOP_SEC_VAR_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_VAR_UNSPECIFIED
+    #undef ADC_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_VAR_UNSPECIFIED
+    #undef ADC_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*CONST,常数*/
+#elif defined ADC_START_SEC_CONST_8BIT
+    #undef ADC_START_SEC_CONST_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_CONST_8BIT
+    #undef ADC_STOP_SEC_CONST_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_CONST_16BIT
+    #undef ADC_START_SEC_CONST_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_CONST_16BIT
+    #undef ADC_STOP_SEC_CONST_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_CONST_32BIT
+    #undef ADC_START_SEC_CONST_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_CONST_32BIT
+    #undef ADC_STOP_SEC_CONST_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_SEC_CONST_UNSPECIFIED
+    #undef ADC_START_SEC_CONST_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_SEC_CONST_UNSPECIFIED
+    #undef ADC_STOP_SEC_CONST_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*CONFIG_DATA,配置数据*/
+#elif defined ADC_START_CONFIG_DATA_8BIT
+    #undef ADC_START_CONFIG_DATA_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_CONFIG_DATA_8BIT
+    #undef ADC_STOP_CONFIG_DATA_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_CONFIG_DATA_16BIT
+    #undef ADC_START_CONFIG_DATA_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_CONFIG_DATA_16BIT
+    #undef ADC_STOP_CONFIG_DATA_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_CONFIG_DATA_32BIT
+    #undef ADC_START_CONFIG_DATA_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_CONFIG_DATA_32BIT
+    #undef ADC_STOP_CONFIG_DATA_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_START_CONFIG_DATA_UNSPECIFIED
+    #undef ADC_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ADC_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef ADC_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/***********************以下为Os模块内存映射定义*************************/
+
+
+/*CODE*/
+/*CODE_FAST*/
+/*代码段*/
+#elif defined OS_START_SEC_CODE
+    #undef OS_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_CODE
+    #undef OS_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+
+#elif defined OS_START_SEC_CODE_FAST
+    #undef OS_START_SEC_CODE_FAST
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_CODE_FAST
+    #undef OS_STOP_SEC_CODE_FAST
+    #undef MEMMAP_ERROR
+
+
+/*VAR_NOINIT,不需要初始化的变量*/
+#elif defined OS_START_SEC_VAR_NOINIT_8BIT
+    #undef OS_START_SEC_VAR_NOINIT_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_NOINIT_8BIT
+    #undef OS_STOP_SEC_VAR_NOINIT_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_NOINIT_16BIT
+    #undef OS_START_SEC_VAR_NOINIT_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_NOINIT_16BIT
+    #undef OS_STOP_SEC_VAR_NOINIT_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_NOINIT_32BIT
+    #undef OS_START_SEC_VAR_NOINIT_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_NOINIT_32BIT
+    #undef OS_STOP_SEC_VAR_NOINIT_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_NOINIT_UNSPECIFIED
+    #undef OS_START_SEC_VAR_NOINIT_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_NOINIT_UNSPECIFIED
+    #undef OS_STOP_SEC_VAR_NOINIT_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*VAR_POWER_ON_INIT 上电后初始化的变量*/
+#elif defined OS_START_SEC_VAR_POWER_ON_INIT_8BIT
+    #undef OS_START_SEC_VAR_POWER_ON_INIT_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_POWER_ON_INIT_8BIT
+    #undef OS_STOP_SEC_VAR_POWER_ON_INIT_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_POWER_ON_INIT_16BIT
+    #undef OS_START_SEC_VAR_POWER_ON_INIT_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_POWER_ON_INIT_16BIT
+    #undef OS_STOP_SEC_VAR_POWER_ON_INIT_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_POWER_ON_INIT_32BIT
+    #undef OS_START_SEC_VAR_POWER_ON_INIT_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_POWER_ON_INIT_32BIT
+    #undef OS_STOP_SEC_VAR_POWER_ON_INIT_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED
+    #undef OS_START_SEC_VAR_POWER_ON_INIT_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED
+    #undef OS_STOP_SEC_VAR_POWER_ON_INIT_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*VAR_FAST,经常使用的变量*/
+#elif defined OS_START_SEC_VAR_FAST_8BIT
+    #undef OS_START_SEC_VAR_FAST_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_FAST_8BIT
+    #undef OS_STOP_SEC_VAR_FAST_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_FAST_16BIT
+    #undef OS_START_SEC_VAR_FAST_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_FAST_16BIT
+    #undef OS_STOP_SEC_VAR_FAST_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_FAST_32BIT
+    #undef OS_START_SEC_VAR_FAST_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_FAST_32BIT
+    #undef OS_STOP_SEC_VAR_FAST_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_FAST_UNSPECIFIED
+    #undef OS_START_SEC_VAR_FAST_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_FAST_UNSPECIFIED
+    #undef OS_STOP_SEC_VAR_FAST_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*VAR,每次复位都初始化的变量*/
+#elif defined OS_START_SEC_VAR_8BIT
+    #undef OS_START_SEC_VAR_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_8BIT
+    #undef OS_STOP_SEC_VAR_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_16BIT
+    #undef OS_START_SEC_VAR_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_16BIT
+    #undef OS_STOP_SEC_VAR_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_32BIT
+    #undef OS_START_SEC_VAR_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_32BIT
+    #undef OS_STOP_SEC_VAR_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_VAR_UNSPECIFIED
+    #undef OS_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_VAR_UNSPECIFIED
+    #undef OS_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*CONST,常数*/
+#elif defined OS_START_SEC_CONST_8BIT
+    #undef OS_START_SEC_CONST_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_CONST_8BIT
+    #undef OS_STOP_SEC_CONST_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_CONST_16BIT
+    #undef OS_START_SEC_CONST_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_CONST_16BIT
+    #undef OS_STOP_SEC_CONST_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_CONST_32BIT
+    #undef OS_START_SEC_CONST_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_CONST_32BIT
+    #undef OS_STOP_SEC_CONST_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_SEC_CONST_UNSPECIFIED   
+    #undef OS_START_SEC_CONST_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_SEC_CONST_UNSPECIFIED
+    #undef OS_STOP_SEC_CONST_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/*CONFIG_DATA,配置数据*/
+#elif defined OS_START_CONFIG_DATA_8BIT
+    #undef OS_START_CONFIG_DATA_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_CONFIG_DATA_8BIT
+    #undef OS_STOP_CONFIG_DATA_8BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_CONFIG_DATA_16BIT
+    #undef OS_START_CONFIG_DATA_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_CONFIG_DATA_16BIT
+    #undef OS_STOP_CONFIG_DATA_16BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_CONFIG_DATA_32BIT
+    #undef OS_START_CONFIG_DATA_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_CONFIG_DATA_32BIT
+    #undef OS_STOP_CONFIG_DATA_32BIT
+    #undef MEMMAP_ERROR
+
+#elif defined OS_START_CONFIG_DATA_UNSPECIFIED
+    #undef OS_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined OS_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef OS_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+/***********************以下为PORT模块内存映射定义*************************/
+
+#elif defined PORT_START_CONFIG_DATA_UNSPECIFIED
+    #undef PORT_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PORT_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef PORT_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PORT_START_SEC_CODE
+    #undef PORT_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined PORT_STOP_SEC_CODE
+    #undef PORT_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined PORT_START_SEC_VAR_UNSPECIFIED
+    #undef PORT_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PORT_STOP_SEC_VAR_UNSPECIFIED
+    #undef PORT_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/***********************以下为DIO模块内存映射定义*************************/
+
+#elif defined DIO_START_CONFIG_DATA_UNSPECIFIED
+    #undef DIO_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined DIO_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef DIO_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined DIO_START_SEC_CODE
+    #undef DIO_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined DIO_STOP_SEC_CODE
+    #undef DIO_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined DIO_START_SEC_VAR_UNSPECIFIED
+    #undef DIO_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined DIO_STOP_SEC_VAR_UNSPECIFIED
+    #undef DIO_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+
+/***********************以下为PWM模块内存映射定义*************************/
+
+#elif defined PWM_START_CONFIG_DATA_UNSPECIFIED
+    #undef PWM_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PWM_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef PWM_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PWM_START_SEC_CODE
+    #undef PWM_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined PWM_STOP_SEC_CODE
+    #undef PWM_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined PWM_START_SEC_VAR_UNSPECIFIED
+    #undef PWM_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PWM_STOP_SEC_VAR_UNSPECIFIED
+    #undef PWM_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/***********************以下为ICU模块内存映射定义*************************/
+
+#elif defined ICU_START_CONFIG_DATA_UNSPECIFIED
+    #undef ICU_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ICU_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef ICU_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ICU_START_SEC_CODE
+    #undef ICU_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined ICU_STOP_SEC_CODE
+    #undef ICU_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined ICU_START_SEC_VAR_UNSPECIFIED
+    #undef ICU_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined ICU_STOP_SEC_VAR_UNSPECIFIED
+    #undef ICU_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+/***********************以下为CAN模块内存映射定义*************************/
+
+#elif defined CAN_START_CONFIG_DATA_UNSPECIFIED
+    #undef CAN_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CAN_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef CAN_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CAN_START_SEC_CODE
+    #undef CAN_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined CAN_STOP_SEC_CODE
+    #undef CAN_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined CAN_START_SEC_VAR_UNSPECIFIED
+    #undef CAN_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CAN_STOP_SEC_VAR_UNSPECIFIED
+    #undef CAN_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/***********************以下为SPI模块内存映射定义*************************/
+
+#elif defined SPI_START_CONFIG_DATA_UNSPECIFIED
+    #undef SPI_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined SPI_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef SPI_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined SPI_START_SEC_CODE
+    #undef SPI_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined SPI_STOP_SEC_CODE
+    #undef SPI_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined SPI_START_SEC_VAR_UNSPECIFIED
+    #undef SPI_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined SPI_STOP_SEC_VAR_UNSPECIFIED
+    #undef SPI_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+/***********************以下为MCU模块内存映射定义*************************/
+
+#elif defined MCU_START_CONFIG_DATA_UNSPECIFIED
+    #undef MCU_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined MCU_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MCU_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined MCU_START_SEC_CODE
+    #undef MCU_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined MCU_STOP_SEC_CODE
+    #undef MCU_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined MCU_START_SEC_VAR_UNSPECIFIED
+    #undef MCU_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined MCU_STOP_SEC_VAR_UNSPECIFIED
+    #undef MCU_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/***********************以下为IoHwAb模块内存映射定义*************************/
+#elif defined IOHWAB_START_CONFIG_DATA_UNSPECIFIED
+    #undef IOHWAB_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined IOHWAB_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef IOHWAB_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined IOHWAB_START_SEC_CODE
+    #undef IOHWAB_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined IOHWAB_STOP_SEC_CODE
+    #undef IOHWAB_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined IOHWAB_START_SEC_VAR_UNSPECIFIED
+    #undef IOHWAB_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined IOHWAB_STOP_SEC_VAR_UNSPECIFIED
+    #undef IOHWAB_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+/***********************以下为CANIF模块内存映射定义*************************/
+
+#elif defined CANIF_START_CONFIG_DATA_UNSPECIFIED
+    #undef CANIF_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CANIF_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef CANIF_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CANIF_START_SEC_CODE
+    #undef CANIF_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined CANIF_STOP_SEC_CODE
+    #undef CANIF_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined CANIF_START_SEC_VAR_UNSPECIFIED
+    #undef CANIF_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CANIF_STOP_SEC_VAR_UNSPECIFIED
+    #undef CANIF_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/***********************以下为CANTP模块内存映射定义*************************/
+
+#elif defined CANTP_START_CONFIG_DATA_UNSPECIFIED
+    #undef CANTP_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CANTP_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef CANTP_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CANTP_START_SEC_CODE
+    #undef CANTP_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined CANTP_STOP_SEC_CODE
+    #undef CANTP_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined CANTP_START_SEC_VAR_UNSPECIFIED
+    #undef CANTP_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined CANTP_STOP_SEC_VAR_UNSPECIFIED
+    #undef CANTP_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+
+/***********************以下为J1939TP模块内存映射定义*************************/
+
+#elif defined J1939TP_START_CONFIG_DATA_UNSPECIFIED
+    #undef J1939TP_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined J1939TP_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef J1939TP_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined J1939TP_START_SEC_CODE
+    #undef J1939TP_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined J1939TP_STOP_SEC_CODE
+    #undef J1939TP_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined J1939TP_START_SEC_VAR_UNSPECIFIED
+    #undef J1939TP_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined J1939TP_STOP_SEC_VAR_UNSPECIFIED
+    #undef J1939TP_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+
+/***********************以下为PDUR模块内存映射定义*************************/
+
+#elif defined PDUR_START_CONFIG_DATA_UNSPECIFIED
+    #undef PDUR_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PDUR_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef PDUR_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PDUR_START_SEC_CODE
+    #undef PDUR_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined PDUR_STOP_SEC_CODE
+    #undef PDUR_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined PDUR_START_SEC_VAR_UNSPECIFIED
+    #undef PDUR_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined PDUR_STOP_SEC_VAR_UNSPECIFIED
+    #undef PDUR_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+/***********************以下为COM模块内存映射定义*************************/
+
+#elif defined COM_START_CONFIG_DATA_UNSPECIFIED
+    #undef COM_START_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined COM_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef COM_STOP_CONFIG_DATA_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined COM_START_SEC_CODE
+    #undef COM_START_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined COM_STOP_SEC_CODE
+    #undef COM_STOP_SEC_CODE
+    #undef MEMMAP_ERROR
+
+#elif defined COM_START_SEC_VAR_UNSPECIFIED
+    #undef COM_START_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined COM_STOP_SEC_VAR_UNSPECIFIED
+    #undef COM_STOP_SEC_VAR_UNSPECIFIED
+    #undef MEMMAP_ERROR
+
+#elif defined MAPDATA_START_SEC_VAR_CONST
+    #undef MAPDATA_START_SEC_VAR_CONST
+    #undef MEMMAP_ERROR
+
+    #define PRAGMA_MAPDATA volatile
+
+    #if defined MAPVER_SEC_VAR_CONST
+        #pragma section ".cal_data_ver"
+    #else
+        #pragma section ".cal_data"
+    #endif
+
+#elif defined MAPDATA_STOP_SEC_VAR_CONST
+    #undef MAPDATA_STOP_SEC_VAR_CONST
+    #undef MEMMAP_ERROR
+
+    #pragma section
+
+    #undef PRAGMA_MAPDATA
+
+#elif defined EEPDATA_START_SEC_VAR
+    #undef EEPDATA_START_SEC_VAR
+    #undef MEMMAP_ERROR
+
+    #pragma section ".runinfo_data" aw
+
+#elif defined EEPDATA_STOP_SEC_VAR
+    #undef EEPDATA_STOP_SEC_VAR
+    #undef MEMMAP_ERROR
+
+    #pragma section
+
+#elif defined APPLAYERVER_START_SEC_VAR
+    #undef APPLAYERVER_START_SEC_VAR
+    #undef MEMMAP_ERROR
+
+    #pragma section ".applayer_info" a
+
+#elif defined APPLAYERVER_STOP_SEC_VAR
+    #undef APPLAYERVER_STOP_SEC_VAR
+    #undef MEMMAP_ERROR
+
+    #pragma section
+
+#elif defined EOL_START_SEC_VAR
+    #undef EOL_START_SEC_VAR
+    #undef MEMMAP_ERROR
+
+    #pragma section ".eol_data" aw
+
+#elif defined EOL_STOP_SEC_VAR
+    #undef EOL_STOP_SEC_VAR
+    #undef MEMMAP_ERROR
+
+    #pragma section
+
+#endif
+
+
+
+
+
+#if defined(MEMMAP_ERROR)
+    #error MEMMAP_ERROR defined,wrong Memory class defined!
+#endif

+ 63 - 0
Global/Std_Types.h

@@ -0,0 +1,63 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2015 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:全局定义
+* 文件名: Std_Types.h
+* 功能描述 : 基本类型定义及全局宏定义头文件
+* 引用记录:该文件被各个.h文件包含
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2009.02.22           00.01.00     方成     第一版
+*******************************************************************************/
+
+#ifndef __TYPEDEF_H
+    #define __TYPEDEF_H
+
+
+    #include "SysConf.h"
+    
+    /*******************************************************************************************
+                                  基本变量类型定义
+    ********************************************************************************************/
+		typedef unsigned char boolean; 
+
+		typedef signed char sint8; 
+		typedef unsigned char uint8;
+		typedef signed short sint16; 
+		typedef unsigned short uint16; 
+		typedef signed long sint32;
+		typedef unsigned long uint32; 
+
+		typedef unsigned long uint8_least; 
+		typedef unsigned long uint16_least;
+		typedef unsigned long uint32_least; 
+
+		typedef signed long sint8_least; 
+		typedef signed long sint16_least;
+		typedef signed long sint32_least;
+
+		typedef float float32; 
+		typedef double float64; 
+		
+		#ifndef NULL
+			#define NULL    (0)
+		#endif
+		
+		#ifndef NULL_PTR
+            #define NULL_PTR ((void *)0)
+        #endif
+
+		#ifndef TRUE
+			#define TRUE 1
+		#endif
+
+		#ifndef FALSE
+			#define FALSE 0
+		#endif
+                     
+ 
+
+#endif 

+ 21 - 0
Global/SysConf.h

@@ -0,0 +1,21 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2015 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:全局定义
+* 文件名: SysConf.h
+* 功能描述 : 系统配置头文件
+* 引用记录:该文件被各个.h文件包含
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2017.09.05   00.01.00    李中               第一版
+*******************************************************************************/
+
+#ifndef __SYSCONF_H
+    #define __SYSCONF_H
+    
+    #define _SAMPLE_CODE_
+
+#endif

+ 398 - 0
HardwareLib/HardwareLib.h

@@ -0,0 +1,398 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2017 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车控制器
+* 文件名: HardwareLib.h
+* 功能描述 : 底层硬件驱总库
+* 引用记录:该文件被GlobalDef.h包含
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2017.05.08  00.01.00     李中
+*******************************************************************************/
+
+#ifndef __HARDWARELIB_H
+    #define __HARDWARELIB_H
+
+
+    #include "Std_Types.h"
+    
+
+    /*******************************************************************************************
+                                 公用函数库
+    ********************************************************************************************/
+
+    //一维查表插值
+    uint16 Intpol_u16u16(uint16 * addrTablePUW,uint16 dataXUW); //1维查表插值,X,Y都是16位无符号整数
+    uint16 Intpol_s16u16(uint16 * addrTablePUW,sint16 dataXW); //1维查表插值,X是有符号整数,Y是无符号整数
+    sint16 Intpol_u16s16(uint16 * addrTablePUW,uint16 dataXUW);//1维查表插值,X是无符号整数,Y是有符号整数
+    sint16 Intpol_s16s16(uint16 * addrTablePUW,sint16 dataXW); //1维查表插值,X,Y都是16位有符号整数
+    uint32 Intpol_u16u32(uint16 * addrTablePUW, uint16 dataXUW); //1维查表插值,X都是16位无符号整数,Y是无符号32位整数
+    uint32 Intpol_u32u32(uint16 * addrTablePUW, uint32 dataXUI); //1维查表插值,X,Y都是32位无符号整数
+
+    //二维查表插值
+    uint16 Intpol_u16u16u16(uint16 * addrTablePUW,uint16 dataXUW,uint16 dataYUW); //2维查表插值,X,Y,Z都是16位无符号整数
+    sint16 Intpol_u16u16s16(uint16 * addrTablePUW,uint16 dataXUW,uint16 dataYUW);//2维查表插值,X,Y都是16位无符号,Z是有符号
+    uint16 Intpol_u16s16u16(uint16 * addrTablePUW,uint16 dataXUW,sint16 dataYW); //2维查表插值,X,Z都是16位无符号,Y是有符号
+    sint16 Intpol_s16u16s16(uint16 * addrTablePUW,sint16 dataXW,uint16 dataYUW); //2维查表插值,X,Z都是16位有符号,Y是无符号
+    uint32 Intpol_u16u16u32(uint16 * addrTablePUW,uint16 dataXUW,uint16 dataYUW); //2维查表插值,X,Y是无符号16位整数,Z是32位无符号整数
+
+    //PT1滤波
+    #define _COMLIB_FACTOR_PT1  1000
+
+    void ComLib_PT1U8(uint8 valRawUB,uint16 K,uint16 T1,uint8 * valLstUB);
+    void ComLib_PT1S8(sint8 valRawB,uint16 K,uint16 T1,sint8 * valLstB);
+    void ComLib_PT1U16(uint16 valRawUW,uint16 K,uint16 T1,uint16 * valLstUW);
+    void ComLib_PT1S16(sint16 valRawW,uint16 K,uint16 T1,sint16 * valLstW);
+    void ComLib_PT1U32(uint32 valRawUI,uint16 K,uint16 T1,uint32 * valLstUI);
+    void ComLib_PT1S32(sint32 valRawI,uint16 K,uint16 T1,sint32 * valLstI);
+
+    /*******************************************************************************************
+                                 底层驱动接口
+    ********************************************************************************************/      
+
+    typedef enum
+    {
+        DSM_DIAG_OPENLOAD=0, /*开路*/
+        DSM_DIAG_SHORTCIRCUIT,  /*短路*/
+        DSM_DIAG_SHORTTOGND, /*短路到地*/
+        DSM_DIAG_SHORTTOPWR /*短路到电源*/
+    } DSM_idxDiagTypeE_TYPE;
+
+    typedef enum
+    {
+        DSM_STATUS_OK=0x0, /*无故障*/
+        DSM_STATUS_ERR=0x1, /*有故障*/
+        DSM_STATUS_NVA=0xFF, /*故障状态未知或无效*/
+    } DSM_stDiagE_TYPE;
+
+    #define _PWM_DUTYCYCLE_FULL 10000U  //10000表示占空比为100.00%
+    #define _PWM_DUTYCYCLE_FACTOR   100U
+
+    #define _PWM_FREQ_FACTOR 10U //频率精度0.1Hz
+
+
+    //模拟量输入
+    #define _ATD_NUM_CHAN 24
+    
+    #define _ATD_INDEX_BAK1_CHAN     0   //BAK1信号,对应接插件X64
+    #define _ATD_INDEX_BAK2_CHAN     1   //BAK2信号,对应接插件X26
+    #define _ATD_INDEX_BAK3_CHAN     2   //BAK3信号,对应接插件X27
+    #define _ATD_INDEX_BAK4_CHAN     3   //BAK4信号,对应接插件X35
+    #define _ATD_INDEX_BAK5_CHAN     4   //BAK5信号,对应接插件X30
+    #define _ATD_INDEX_BAK6_CHAN     5   //BAK6信号,对应接插件X31
+    #define _ATD_INDEX_DI9_CHAN      6   //DI9信号,对应接插件X15
+    #define _ATD_INDEX_DI8_CHAN      7   //DI8信号,对应接插件X11
+    #define _ATD_INDEX_DI10_CHAN     8   //DI10信号,对应接插件X4
+    #define _ATD_INDEX_BRAKE1_CHAN   10  //制动1,对应接插件X58
+    #define _ATD_INDEX_ACCPED2_CHAN  11  //加速踏板2,对应接插件X63
+    #define _ATD_INDEX_DI7_CHAN      12  //DI7信号,对应接插件X5
+    #define _ATD_INDEX_DI1_CHAN      14  //DI1信号,对应接插件X10
+    #define _ATD_INDEX_DI6_CHAN      15  //DI6信号,对应接插件X9
+    #define _ATD_INDEX_BRAKE2_CHAN   16  //制动2,对应接插件X61
+    #define _ATD_INDEX_ACCPED1_CHAN  17  //加速踏板1,对应接插件X62
+    #define _ATD_INDEX_DI5_CHAN      19  //DI5信号,对应接插件X14
+    #define _ATD_INDEX_DI4_CHAN      20  //DI4信号,对应接插件X13
+    #define _ATD_INDEX_DI3_CHAN      21  //DI3信号,对应接插件X18
+    #define _ATD_INDEX_DI2_CHAN      22  //DI2信号,对应接插件X17
+    #define _ATD_INDEX_UBATTERY_CHAN 23  //蓄电池电压,内部连接
+
+    uint16 ATDDrv_GetChanResult(uint8 idxChanUB); //得到上述通道的电压值,电压值精度1/4095V/bit
+    
+    
+    //数字量输入
+    #define _DIN_NUM_CHAN 16
+    #define _DIN_NUM_ADCHAN  10 //前10路通过AD通道实现软件可配置上下拉
+
+    #define _DIN_OPENLVL_LOW_STATE  0
+    #define _DIN_OPENLVL_HIGH_STATE 1
+
+    #define _DIN_INDEX_BAK1_CHAN    0   //开关1信号,对应接插件X10
+    #define _DIN_INDEX_BAK2_CHAN    1   //开关2信号,对应接插件X17
+    #define _DIN_INDEX_BAK3_CHAN    2   //开关3信号,对应接插件X18
+    #define _DIN_INDEX_BAK4_CHAN    3   //开关4信号,对应接插件X13
+    #define _DIN_INDEX_BAK5_CHAN    4   //开关5信号,对应接插件X14
+    #define _DIN_INDEX_BAK6_CHAN    5   //开关6信号,对应接插件X9
+    #define _DIN_INDEX_BAK7_CHAN    6   //开关7信号,对应接插件X5
+    #define _DIN_INDEX_BAK8_CHAN    7   //开关8信号,对应接插件X11
+    #define _DIN_INDEX_BAK9_CHAN    8   //开关9信号,对应接插件X15
+    #define _DIN_INDEX_BAK10_CHAN   9   //开关10信号,对应接插件X4
+    #define _DIN_INDEX_BAK11_CHAN   10  //开关11信号,对应接插件X7
+    #define _DIN_INDEX_BAK12_CHAN   11  //开关12信号,对应接插件X6
+    #define _DIN_INDEX_BAK13_CHAN   12  //开关13信号,对应接插件X3
+    #define _DIN_INDEX_BAK14_CHAN   13  //开关14信号,对应接插件X19
+    #define _DIN_INDEX_BAK15_CHAN   14  //开关15信号,对应接插件X22
+    #define _DIN_INDEX_BAK16_CHAN   15  //开关16信号,对应接插件X23
+    
+    void DINDrv_SetChanThres(uint8 idxChanUB, uint8 stOpenLvlUB, uint16 uThresUW);
+    uint8 DINDrv_GetChanState(uint8 idxChanUB); //得到上述通道开关状态
+    
+    
+    //数字量输出
+    #define _DO_NUM_CHAN  1
+
+    #define _DO_INDEX_CPCTL_CHAN    0 //CP采样回路下拉电阻控制
+
+    void DODrv_SetChanState(uint8 idxChanUB, uint8 bLvlUB); //bLvlUB表示电平状态,0为低电平,1为高电平
+
+
+    //频率量采集
+    #define _PULSEACQ_NUM_CHAN 2
+    
+    #define _PULSEACQ_INDEX_CP_CHAN     0 //充电头CP信号采集,对应接插件X21
+    #define _PULSEACQ_INDEX_BAK2_CHAN   1 //频率信号1采集,对应接插件X39
+    
+    void PulseAcqDrv_GetChanFreq(uint8 idxChanUB, uint32 *fFreqUIP, uint16 *rDutyUWP); //获取通道的频率信息,频率精度0.1Hz/bit,占空比精度0.01%/bit
+    void PulseAcqDrv_GetChanDura(uint8 idxChanUB, uint32 *tiPeriodUIP, uint32 *tiPosUIP); //获取通道的时间信息,时间精度0.02us/bit
+    
+
+    //模拟量输出
+    #define _AO_NUM_CHAN 2
+
+    #define _AO_INDEX_ACCPED1_CHAN  0 //模拟油门信号1,对应接插件X27
+    #define _AO_INDEX_ACCPED2_CHAN  1 //模拟油门信号2,对应接插件X31
+
+    void AODrv_Interface(uint8 idxChanUB,uint16 uSetpointUW); //输出模拟量,输入目标电压值,电压值精度1/4095V/bit
+
+
+    //PWM型信号输出及频率型低边驱动
+    #define _PPWM_NUM_CHAN 12
+
+	#define _PPWM_INDEX_FHBAK1_CHAN    0   //高边驱动1,对应接插件X36
+    #define _PPWM_INDEX_FHBAK2_CHAN    1   //高边驱动2,对应接插件X32
+    #define _PPWM_INDEX_FHBAK3_CHAN    2   //高边驱动3,对应接插件X28
+    #define _PPWM_INDEX_FHBAK4_CHAN    3   //高边驱动4,对应接插件X24
+    #define _PPWM_INDEX_FHBAK5_CHAN    4   //高边驱动5,对应接插件X20
+    #define _PPWM_INDEX_FHBAK6_CHAN    5   //高边驱动6,对应接插件X16
+    #define _PPWM_INDEX_FHBAK7_CHAN    6   //高边驱动7,对应接插件X12
+    #define _PPWM_INDEX_FHBAK8_CHAN    7   //高边驱动8,对应接插件X8
+    #define _PPWM_INDEX_FBAK1_CHAN     8   //频率低边驱动1,对应接插件X38
+    #define _PPWM_INDEX_FBAK2_CHAN     9   //频率低边驱动2,对应接插件X40
+    #define _PPWM_INDEX_FBAK3_CHAN     10  //频率低边驱动3,对应接插件X45
+    #define _PPWM_INDEX_FBAK4_CHAN     11  //频率低边驱动4,对应接插件X46
+    
+    //该函数须放在10ms任务中调用
+    void PPWMDrv_Interface(uint8 idxChanUB,uint32 fSetUI,uint16 rSetUW); //输出上述通道的低边驱动频率及占空比,频率精度0.1Hz/bit,占空比精度0.01%/bit
+    DSM_stDiagE_TYPE PPWMDrv_GetChanDiagInfo(uint8 idxChanUB,DSM_idxDiagTypeE_TYPE idxDiagTypeE);
+
+    //高低边驱动
+    #define _PSWT_NUM_CHAN 17
+
+    #define _PSWT_INDEX_HBAK1_CHAN    0    //高边驱动1,对应接插件X36
+    #define _PSWT_INDEX_HBAK2_CHAN    1    //高边驱动2,对应接插件X32
+    #define _PSWT_INDEX_HBAK3_CHAN    2    //高边驱动3,对应接插件X28
+    #define _PSWT_INDEX_HBAK4_CHAN    3    //高边驱动4,对应接插件X24
+    #define _PSWT_INDEX_HBAK5_CHAN    4    //高边驱动5,对应接插件X20
+    #define _PSWT_INDEX_HBAK6_CHAN    5    //高边驱动6,对应接插件X16
+    #define _PSWT_INDEX_HBAK7_CHAN    6    //高边驱动7,对应接插件X12
+    #define _PSWT_INDEX_HBAK8_CHAN    7    //高边驱动8,对应接插件X8
+	#define _PSWT_INDEX_LBAK1_CHAN    8    //低边驱动1,对应接插件X34
+    #define _PSWT_INDEX_LBAK2_CHAN    9    //低边驱动2,对应接插件X44
+    #define _PSWT_INDEX_LBAK3_CHAN    10   //低边驱动3,对应接插件X41
+    #define _PSWT_INDEX_LBAK4_CHAN    11   //低边驱动4,对应接插件X43
+    #define _PSWT_INDEX_LBAK5_CHAN    12   //低边驱动5,对应接插件X37
+    #define _PSWT_INDEX_LBAK6_CHAN    13   //低边驱动6,对应接插件X42
+    #define _PSWT_INDEX_LBAK7_CHAN    14   //低边驱动7,对应接插件X47
+    #define _PSWT_INDEX_LBAK8_CHAN    15   //低边驱动8,对应接插件X48
+    #define _PSWT_INDEX_MAINRELAY_CHAN 16  //功率电主继电器,对应接插件X33
+    
+    //该函数须放在10ms任务中调用
+    void PSwtDrv_Interface(uint8 idxChanUB,uint8 bOpenUB); //输出上述通道的低边驱动状态, bOpen=1时为打开, 否则为关闭
+    DSM_stDiagE_TYPE PSwtDrv_GetChanDiagInfo(uint8 idxChanUB,DSM_idxDiagTypeE_TYPE idxDiagTypeE);
+
+
+    //CAN通讯接口
+    #define _MCAN_NUM_CHAN     3
+    /*
+     * CAN0具备32个收发缓存,带电源隔离
+     * CAN1具备64个收发缓存,带CAN唤醒
+     * CAN2具备32个收发缓存,其中MO24~31由底层CCP、UDS等协议占用
+     */
+
+    #define _MCAN_DIR_RX    0
+    #define _MCAN_DIR_TX    1
+
+    #define _MCAN_IDE_STD    0
+    #define _MCAN_IDE_EXT    1
+
+    typedef enum
+    {
+        MCAN_Status_ok                = 0x00000000,
+        MCAN_Status_notInitialised    = 0x00000001,
+        MCAN_Status_wrongParam        = 0x00000002,
+        MCAN_Status_wrongPin          = 0x00000004,
+        MCAN_Status_busHeavy          = 0x00000008,
+        MCAN_Status_busOff            = 0x00000010,
+        MCAN_Status_notSentBusy       = 0x00000020,
+        MCAN_Status_receiveEmpty      = 0x00000040,
+        MCAN_Status_messageLost       = 0x00000080,
+        MCAN_Status_newData           = 0x00000100,
+        MCAN_Status_newDataButOneLost = MCAN_Status_messageLost | MCAN_Status_newData
+    } MCAN_stRetE_TYPE;
+
+    typedef enum
+    {
+        MCAN_NODEMODE_MO = 0,  //MO模式下,每个MO对应一个具体的报文
+        MCAN_NODEMODE_BUF = 1, //BUF模式,接收使用一个MO处理,其它MO成为发送缓存
+        MCAN_NODEMODE_UNKNOWN = 0xFF,
+    } MCANDrv_idxNodeModeE_TYPE;
+
+    typedef union
+    {
+        uint32 U;
+        struct
+        {
+            uint32 DLC       : 8; //数据长度
+            uint32 DIR       : 1; //0为接收,1为发送
+            uint32 IDE       : 1; //0为标准帧,1为扩展帧
+            uint32 Reserved  : 6;
+            uint32 CAN       : 8; //CAN通道号
+            uint32 MO        : 8; //MO序号
+        } B;
+    } MCANDrv_infoMsgParU_TYPE;
+
+    typedef struct 
+    {
+        MCANDrv_infoMsgParU_TYPE infoMsgParU;
+        uint32 infoMsgIDUI;
+    } MCANDrv_infoMsgConfS_TYPE;
+
+    typedef struct
+    {
+        MCANDrv_infoMsgConfS_TYPE infoConfS;
+        uint8  datMsgUBA[8];
+    } MCANDrv_infoMsgS_TYPE;
+
+    typedef void (*pFunc_TxMsgCallback)(void);
+    typedef void (*pFunc_RxMsgCallback)(MCANDrv_infoMsgS_TYPE infoMsgS);
+
+    /*CAN设置函数*/
+    uint8 MCANDrv_SetBaudrate(uint8 idxCANUB, uint32 baudrateUI);
+    uint8 MCANDrv_SetCANMode(uint8 idxCANUB, MCANDrv_idxNodeModeE_TYPE idxNodeModeE);
+    uint8 MCANDrv_SetMsgObj(const MCANDrv_infoMsgConfS_TYPE infoMsgConfS, void *pFunc);
+    uint8 MCANDrv_SetCallbackFunc(uint8 idxCANUB, const pFunc_RxMsgCallback pRxFunc, const pFunc_TxMsgCallback pTxFunc);
+    
+    /*CAN操作函数*/
+    MCAN_stRetE_TYPE MCANDrv_SendMsg(const MCANDrv_infoMsgS_TYPE infMsgS);
+
+    uint8 MCANDrv_CheckIfBusOff(uint8 idxCANUB); //返回1表示有busoff错误
+
+
+    /*EEPROM处理接口*/
+    extern uint8 EEPROMDrv_bSaveInstantUB;  //用于立即触发EEPROM的存储,置1后可查询其值为0时表示存储完成
+
+
+    /*******************************************************************************************
+                                 底层已处理物理量
+    ********************************************************************************************/
+    extern uint16 BattCD_uFltUW;  //蓄电池电压,1/100V/bit
+    extern uint16 BattCD_tPwrChipUW;//电源芯片温度
+    extern uint32 SysCon_tiRunHighResiUI;//系统运行时间
+
+    typedef union
+    {
+        uint8 U;
+        struct
+        {
+            uint8 bCAN      : 1;
+            uint8 bLogic    : 1;
+            uint8 bWkpSig1  : 1;
+            uint8 bWkpSig2  : 1;
+            uint8           : 4;
+        } B;
+    } BattCD_stWakeupU_TYPE;
+
+    extern BattCD_stWakeupU_TYPE BattCD_stWakeupU;
+    
+    extern uint8 HardwareDrv_bBootloaderReqUB; //进入Bootloader请求,当出现该请求时会将BattCD_stWakeupU清零,在进入Afterrun时,进行进入安全状态的操作
+
+    
+    /*******************************************************************************************
+                                整车控制状态
+    *******************************************************************************************/
+    extern uint32 SysCon_tiRunLowUI; //从上次复位到现在系统的运行时间,单位s
+
+
+    /*******************************************************************************************
+     * 故障管理模块接口
+     ******************************************************************************************/
+
+     /*******************************************************************************************
+                                   故障诊断
+    ********************************************************************************************/
+    #define _DSM_NUM_CONF_DFC_CHECKS 100  /*最大允许的故障号数*/
+    #define _DSM_NUM_CONF_DINH_FIDS 32   /*最大允许的故障禁止操作数*/
+    #define _DSM_NUM_CONF_DFES_ENTRIES 20  /*最大存储并向外报送的故障数*/
+    #define _DINH_NUM_DFC_FID_MAX 6   /*每个故障号最多可关联的故障禁止操作数*/
+
+
+    /*故障号定义DFC*/
+    /*********************************************************************************************/
+    /*样例代码*/
+    #ifdef _SAMPLE_CODE_
+
+    #define _DFC_INDEX_ACCPED_SIGHIGH 0 /*油门1信号ACCPED高*/
+    #define _DFC_INDEX_ACCPED_SIGLOW 1 /*油门1信号ACCPED低*/
+    #define _DFC_INDEX_ACCPED_SIGHNPL 2 /*油门信号ACCPED不合理*/
+    #define _DFC_INDEX_ACCPED2_SIGHIGH 3 /*油门2信号ACCPED高*/
+    #define _DFC_INDEX_ACCPED2_SIGLOW 4 /*油门2信号ACCPED低*/
+
+    #endif //_SAMPLE_CODE_
+    /*********************************************************************************************/
+
+
+    /*故障禁止操作定义FID*/
+    /*底层用FID*/
+    #define _DINH_INDEX_FID_DSM_WUC 0  /*故障诊断系统的暖机循环计数是否禁止*/
+    #define _DINH_INDEX_FID_DSM_TST 1  /*下线检测故障屏蔽功能是否使用*/
+
+    /*********************************************************************************************/
+    /*样例代码*/
+    #ifdef _SAMPLE_CODE_
+
+    #define _DINH_INDEX_FID_APP1 2 /*加速踏板1信号故障失效模式*/
+    #define _DINH_INDEX_FID_APP2 3 /*加速踏板2信号故障失效模式*/
+    #define _DINH_INDEX_FID_ACCPED_NPL 4 /*油门1和油门2 进行互捡*/
+
+    #endif //_SAMPLE_CODE_
+    /*********************************************************************************************/
+
+
+    extern uint8 DFES_numMilUB; /*点亮故障灯的Memory Entry数目*/
+    extern uint8 DFES_numSvsUB; /*点亮维修灯的Memory Entry数目*/
+    extern uint8 DFES_bMilOnUB; /*故障灯是否点亮*/
+    extern uint8 DFES_bMilBlinkUB; /*故障灯是否闪烁*/
+
+
+    /*向DFC报告故障状*/
+    /*使用举例:*/
+    /*DFC_ReportFaultLevel(_DFC_INDEX_FTS_SIGHIGH,_DDRC_MASK_ANA_FT_LV_OK);*/
+    /*DFC_ReportFaultLevel(_DFC_INDEX_FTS_SIGLOW,_DDRC_MASK_ANA_FT_LV_ERROR);*/
+    #define _DDRC_MASK_ANA_FT_LV_OK       0x0
+    #define _DDRC_MASK_ANA_FT_LV_ERROR    0xF
+
+    void DFC_ReportFaultLevel(uint16 idxDFCUW,uint8 stFaultLevelUB);
+
+
+    /*获取DFC的故障状态*/
+    /*返回值为0时,表示该DFC无故障;返回值为1时,表示该DFC故障*/
+    uint8 DFC_GetErrState(uint16 idxDFCUW);
+
+
+    /*获取DFC的故障累积状态*/
+    #define _DFC_INDEX_PRELIMINARILY_DEFECTIVE_STATUS 1
+    #define _DFC_INDEX_FINALLY_DEFECTIVE_STATUS 2
+    #define _DFC_INDEX_PRELIMINARILY_HEALED_STATUS 3
+    #define _DFC_INDEX_FINALLY_HEALED_STATUS 4
+
+    uint8 DFC_GetDebState(uint16 idxDFCUW);
+
+
+    /*获取FID的状态*/
+    /*返回值为0时,表示未触发该FID;为1时,表示触发了该FID*/
+    uint8 DINH_GetFIDState(uint8 idxFIDUB);
+
+
+#endif

+ 43 - 0
HardwareLib/Rte_Cal.c

@@ -0,0 +1,43 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2018 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:底层与应用层配置参数接口
+* 文件名: Rte_Cal.c
+* 功能描述 : 
+* 引用记录:
+* 备注: 
+* 修订记录:
+*       日期                          版本          作者      描述
+*       2018.06.28        00.01.00    李中             盘古开天地
+*******************************************************************************/
+
+#include "Rte_Cal.h"
+
+
+const uint32 SysCon_tiAfterrunMaxUI_C=90000; /*SysCon_tiAfterrunMaxUI_C, Afterrun状态下停留的最长时间*/
+const uint32 SysCon_tiAfterrunBootEntryUI_C=500; /*SysCon_tiAfterrunMaxUI_C, 进入Bootloader时Afterrun状态下停留的最长时间*/
+
+
+/*************************************************************/
+/*标定数据区开始(请不要在该区域加入非标定数据相关的内容)                                                                                 */
+
+    #define MAPDATA_START_SEC_VAR_CONST
+    #include "MemMap.h"
+
+    /*RTE*/
+    PRAGMA_MAPDATA const uint16 FS45Drv_bCANWakeupEnUW_C=0; /*电源芯片是否具备CAN唤醒功能*/
+
+    #define MAPDATA_STOP_SEC_VAR_CONST
+    #include "MemMap.h"
+
+/*标定数据区结束                                                                                                                                                                               */
+/*************************************************************/
+
+
+
+
+
+
+

+ 42 - 0
HardwareLib/Rte_Cal.h

@@ -0,0 +1,42 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2018 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:底层与应用层配置参数接口
+* 文件名: Rte_Cal.h
+* 功能描述 : 
+* 引用记录:
+* 备注: 
+* 修订记录:
+*		日期		                    版本		    作者		描述
+*       2018.06.28        00.01.00    李中             盘古开天地
+*******************************************************************************/
+#ifndef RTE_CAL_H
+    #define RTE_CAL_H
+	
+	    
+    #include "Std_Types.h"
+    #include "HardwareLib.h"
+
+    extern const uint32 SysCon_tiAfterrunMaxUI_C; /*SysCon_tiAfterrunMaxUI_C, Afterrun状态下停留的最长时间*/
+    extern const uint32 SysCon_tiAfterrunBootEntryUI_C;  /*SysCon_tiAfterrunMaxUI_C, Afterrun状态下停留的最长时间*/
+
+    /*************************************************************/
+    /*标定数据区开始(请不要在该区域加入非标定数据相关的内容)                                                                                 */
+
+    #define MAPDATA_START_SEC_VAR_CONST
+    #include "MemMap.h"
+
+    /*RTE*/
+    extern PRAGMA_MAPDATA const uint16 FS45Drv_bCANWakeupEnUW_C;  /*电源芯片是否具备CAN唤醒功能*/
+
+    #define MAPDATA_STOP_SEC_VAR_CONST
+    #include "MemMap.h"
+
+    /*标定数据区结束                                                                                                                                                                               */
+    /*************************************************************/
+    
+    
+    
+#endif	

BIN
HardwareLib/libBootloader.a


BIN
HardwareLib/libVehicleLib.a


BIN
System/Vehicle/._VehCo.c


+ 701 - 0
System/Vehicle/AccPedCD/AccPedCD.c

@@ -0,0 +1,701 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2018 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车管理_车辆运动
+* 文件名: AccPedCD.h
+* 功能描述 : 油门踏板模块驱动
+* 引用记录:
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2018.01.12   00.01.00    李中               第一版
+*******************************************************************************/
+#include "HardwareLib.h"
+#include "AccPedCD.h"
+
+/*********************************************************************************************/
+/*样例代码*/
+#ifdef _SAMPLE_CODE_
+    
+uint16 AccPedCD_rFltUW,AccPedCD_rUW; //油门踏板位置
+uint16 AccPedCD_rRawUW;              //类似bosch文档APPCD_rLinAPP1   
+uint16 AccPedCD_uUW,AccPedCD_u2UW,AccPedCD_uFltUW;
+uint16 AccPedCD_uOldUW;
+
+uint8 AccPedCD_idxDeltaMonUB;
+sint16 AccPedCD_drUnFltW; //油门踏板斜率
+uint16 AccPedCD_rOldUW; //上一时刻油门踏板,用于斜率计算
+
+uint8 AccPedCD_bIdleSwtUB; //怠速开关状态,0:怠速位置  1:全负荷位置
+uint8 AccPedCD_bIdleRawUB; //怠速开关原始信号,怠速开关状态和怠速开关原始信号的关系与怠速开关类型相关
+
+uint8 AccPedCD_stMaxUB,AccPedCD_stMinUB,AccPedCD_stNplUB;
+uint8 AccPedCD_st2MaxUB,AccPedCD_st2MinUB;
+
+uint16 AccPedCD_facT1UW;
+
+uint8 Fid_APP1UB_mp;    //加速踏板1故障禁止状态
+uint8 Fid_APP2UB_mp;    //加速踏板2故障禁止状态
+
+uint16 AccPedCD_stAPPLatchUW;		//上一循环加速踏板诊断的状态  1 部分故障, 2 完全故障, 3 部分恢复, 4完全正常
+uint16 AccPedCD_stRampUW;			//故障恢复的Ramp状态,0 Ramp结束, 1 Ramp使能 
+
+/*************************************************************/
+/*标定数据区开始(请不要在该区域加入非标定数据相关的内容)   */
+
+    #define MAPDATA_START_SEC_VAR_CONST
+    #include "MemMap.h"
+
+    /*AccPedCD_Cal*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_uSRCMaxUW_C=18428; /*AccPedCD_uSRCMaxUW_C,最大值*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_uSRCMinUW_C=2048; /*AccPedCD_uSRCMinUW_C,最小值*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_uMaxDiffUW_C=2047; /*AccPedCD_uMaxDiffUW_C,AccPed2与AccPed1最大相差多少...*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_uHighLimIdleUW_C=18427; /*AccPedCD_uHighLimIdleUW_C,怠速开关高限*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_uLowLimIdleUW_C=819; /*AccPedCD_uLowLimIdleUW_C,怠速开关低限*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_bPlausEnUW_C=1; /*AccPedCD_bPlausEnUW_C,油门合理性检测是否启用*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_rFltUW_C=0; /*数字油门,AccPedCD_rFltUW_C*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_bDigEnUW_C=1; /*油门控制模式,AccPedCD_bDigEnUW_C, 1为正常控制, 0为数字油门*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_swtUseUW_C=1; /*AccPedCD_swtUseUW_C,油门传感器类型,1:双油门,2:怠速开关,3:单油门*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_idxIdleSwtTypeUW_C=0; /*AccPedCD_idxIdleSwtTypeUW_C,怠速开关类型 ,0:接电源常开,1:接电源常闭,2:接地常开,3:接地常闭*/
+    PRAGMA_MAPDATA const AccPedCD_rUW_CUR_TYPE AccPedCD_rUW_CUR=
+    {
+        4,
+        {
+        4505,14169,16380,20475
+        },
+        {
+        0,25600,25600,25600
+        }
+    }; /*油门标定,AccPedCD_rUW_CUR,系数256,单位%*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_rThresFltLowPosUW_C=3840; /*AccPedCD_rThresFltLowPosUW_C,小油门限*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_rThresFltMidPosUW_C=10240; /*AccPedCD_rThresFltMidPosUW_C,中油门限*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_facT1LowNegUW_C=0; /*AccPedCD_facT1LowNegUW_C,小油门负向滤波系数*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_facT1MidNegUW_C=0; /*AccPedCD_facT1MidNegUW_C,中油门负向滤波系数*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_facT1HighNegUW_C=0; /*AccPedCD_facT1HighNegUW_C,大油门负向滤波系数*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_facT1LowPosUW_C=750; /*AccPedCD_facT1LowPosUW_C,小油门正向滤波系数*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_facT1MidPosUW_C=250; /*AccPedCD_facT1MidPosUW_C,中油门正向滤波系数*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_facT1HighPosUW_C=250; /*AccPedCD_facT1HighPosUW_C,大油门正向滤波系数*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_duThresStationaryUW_C=123; /*AccPedCD_duThresStationaryUW_C,稳态油门变化范围*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_facT1StationaryUW_C=900; /*AccPedCD_facT1StationaryUW_C,稳态滤波系数*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_facDualRelUW_C=2; /*AccPedCD_facDualRelUW_C, 双油门两路信号的比例关系,第一路/第二路*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_drHealRmpUp_C=2560; /*AccPedCD_drHealRmpUp_C; 加速踏板故障恢复正向Ramp步长。APPCD_drHealRmpUp_C: healing ramp pos. slope<value>*/
+    PRAGMA_MAPDATA const uint16 AccPedCD_drHealRmpDwn_C=2560; /*AccPedCD_drHealRmpDwn_C;  故障恢复时向下Ramp步长; APPCD_drHealRmpDwn_C: healing ramp neg. slope<value>*/
+
+    #define MAPDATA_STOP_SEC_VAR_CONST
+    #include "MemMap.h"
+
+/*标定数据区结束                                             */
+/*************************************************************/
+
+/***********************************************
+ * 函数:油门踏板驱动模块初始化
+ * 功能:初始化模块中应用到的各变量。
+***********************************************/
+void AccPedCD_Init(void)
+{   
+    AccPedCD_uFltUW=0;
+    AccPedCD_idxDeltaMonUB=0;
+    AccPedCD_drUnFltW=0;
+    AccPedCD_rOldUW=0;
+    
+    Fid_APP1UB_mp=0;
+    Fid_APP2UB_mp=0; 
+    AccPedCD_stAPPLatchUW = _DFC_INDEX_FINALLY_HEALED_STATUS;
+    AccPedCD_stRampUW=0;
+    
+    if(1==AccPedCD_swtUseUW_C) 
+    {
+        //双油门
+        
+        //油门1
+        AccPedCD_uUW=ATDDrv_GetChanResult(_ATD_INDEX_ACCPED1_CHAN);
+        AccPedCD_uOldUW=AccPedCD_uUW;
+        //油门2
+        AccPedCD_u2UW=ATDDrv_GetChanResult(_ATD_INDEX_ACCPED2_CHAN);
+    }
+    else
+    {
+        if(2==AccPedCD_swtUseUW_C)
+        {
+             //带怠速开关的油门
+        
+            //油门1
+            AccPedCD_uUW=ATDDrv_GetChanResult(_ATD_INDEX_ACCPED1_CHAN);
+            AccPedCD_uOldUW=AccPedCD_uUW;
+            
+            //得到怠速开关状态
+            AccPedCD_bIdleRawUB=DINDrv_GetChanState(_DIN_INDEX_BAK1_CHAN);
+            
+
+			if((0==AccPedCD_idxIdleSwtTypeUW_C)||(3==AccPedCD_idxIdleSwtTypeUW_C))
+			{
+				//接电常开或者接地常闭
+				//AccPedCD_bIdleRawUB为1表明踏板踩下,在全负荷位置
+				AccPedCD_bIdleSwtUB=AccPedCD_bIdleRawUB;
+			}
+			else
+			{
+				//接电常闭或者接地常开
+				//AccPedCD_bIdleRawUB为0表明踏板踩下,在全负荷位置
+				AccPedCD_bIdleSwtUB=(!AccPedCD_bIdleRawUB);
+			}
+                
+        }
+        else
+        {
+            //单油门
+            AccPedCD_uUW=ATDDrv_GetChanResult(_ATD_INDEX_ACCPED1_CHAN);
+            AccPedCD_uOldUW=AccPedCD_uUW;
+        }
+    }
+    
+             
+    AccPedCD_Update();           
+}
+
+/***********************************************
+ * 函数:油门信号滤波函数
+ * 功能:判断油门为小中大油门及正负向,并进行滤波。
+***********************************************/
+void AccPedCD_Filter(void)
+{    
+    //参数选取
+    if(AccPedCD_rFltUW>AccPedCD_rRawUW)
+    {
+        //下降,3段滤波
+        if(AccPedCD_rFltUW<AccPedCD_rThresFltLowPosUW_C)
+        {
+            AccPedCD_facT1UW=AccPedCD_facT1LowNegUW_C;
+        }
+        else
+        {
+            if(AccPedCD_rFltUW<AccPedCD_rThresFltMidPosUW_C) 
+            {
+                AccPedCD_facT1UW=AccPedCD_facT1MidNegUW_C;
+            }
+            else
+            {
+                AccPedCD_facT1UW=AccPedCD_facT1HighNegUW_C;
+            }
+        }   
+        
+    }
+    else                
+    {                 
+        //上升,3段滤波                 
+        if(AccPedCD_rFltUW<AccPedCD_rThresFltLowPosUW_C)
+        {
+            AccPedCD_facT1UW=AccPedCD_facT1LowPosUW_C;
+        }
+        else
+        {
+            if(AccPedCD_rFltUW<AccPedCD_rThresFltMidPosUW_C) 
+            {
+                AccPedCD_facT1UW=AccPedCD_facT1MidPosUW_C;
+            }
+            else
+            {
+                AccPedCD_facT1UW=AccPedCD_facT1HighPosUW_C;
+            }
+        }
+    } 
+    
+    //输出值计算
+        
+    ComLib_PT1U16(AccPedCD_uUW,(uint16)(_COMLIB_FACTOR_PT1-AccPedCD_facT1UW),AccPedCD_facT1UW,(uint16 *)&AccPedCD_uFltUW); 	//AD值滤波
+    ComLib_PT1U16(AccPedCD_rUW,(uint16)(_COMLIB_FACTOR_PT1-AccPedCD_facT1UW),AccPedCD_facT1UW,(uint16 *)&AccPedCD_rFltUW);  //油门滤波
+}
+
+/***********************************************
+ * 函数:计算油门信号数值
+ * 功能:根据步长计算油门信号增大或减小的数值。
+***********************************************/
+void AccPedCD_Ramp(void)
+{
+	//ramp
+	if(1==AccPedCD_stRampUW)
+	{
+		//ramp使能状态 Ramp start
+	    if(AccPedCD_rRawUW>=AccPedCD_rUW)
+	    {
+	        //向上
+	        if((AccPedCD_rRawUW - AccPedCD_rUW)<=AccPedCD_drHealRmpUp_C)
+	        {
+	            //差值小于最小步长限制
+	            AccPedCD_rUW = AccPedCD_rRawUW; 
+	            AccPedCD_stRampUW=0;//Ramp结束   
+	        }
+	        else
+	        {
+	            AccPedCD_rUW += AccPedCD_drHealRmpUp_C;        
+	        }
+	    }
+	    else
+	    {
+	        //向下
+	        if((AccPedCD_rUW - AccPedCD_rRawUW)<=AccPedCD_drHealRmpDwn_C)
+	        {
+	            //差值小于最小步长限制
+	            AccPedCD_rUW = AccPedCD_rRawUW;
+	            AccPedCD_stRampUW=0;//Ramp结束 Ramp end      
+	        }
+	        else
+	        {
+	            AccPedCD_rUW -= AccPedCD_drHealRmpDwn_C;        
+	        }        
+	    }
+	}
+	else
+	{
+		AccPedCD_rUW=AccPedCD_rRawUW;	
+	}
+}
+
+/***********************************************
+ * 函数:双油门信号处理
+ * 功能:向DSM模块请求信息,判断当前状态为正常/部分正常/完全故障,根据状态进行更新操作。
+ * 结构:请求故障状态信息,判断当前状态后,决定油门信号更新/清零/保持不变。
+***********************************************/
+void AccPedCD_DualAnalog(void)
+{
+    uint16 uDiffUW;
+
+    /*获取油门相关FID状态:加速踏板1/2信号故障失效模式是否开启*/
+    //双油门
+    Fid_APP1UB_mp=DINH_GetFIDState(_DINH_INDEX_FID_APP1);
+    Fid_APP2UB_mp=DINH_GetFIDState(_DINH_INDEX_FID_APP2); 
+
+    /*获取油门相关DFC故障水平:油门踏板1/2信号过高/低、油门NPL故障*/
+    //第一油门SRC HIGH故障
+    AccPedCD_stMaxUB=DFC_GetDebState(_DFC_INDEX_ACCPED_SIGHIGH);
+    
+    //第一油门SRC LOW故障
+    AccPedCD_stMinUB=DFC_GetDebState(_DFC_INDEX_ACCPED_SIGLOW);
+    
+    //第一油门NPL故障
+    AccPedCD_stNplUB=DFC_GetDebState(_DFC_INDEX_ACCPED_SIGHNPL);
+    
+    //第二油门SRC HIGH故障
+    AccPedCD_st2MaxUB=DFC_GetDebState(_DFC_INDEX_ACCPED2_SIGHIGH);
+    
+    //第二油门SRC LOW故障
+    AccPedCD_st2MinUB=DFC_GetDebState(_DFC_INDEX_ACCPED2_SIGLOW);
+    
+    if((_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_stMaxUB)||
+        (_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_st2MaxUB)||
+        (_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_stMinUB)||
+        (_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_st2MinUB)||
+        (_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_stNplUB)||
+        (Fid_APP1UB_mp==1)||
+        (Fid_APP2UB_mp==1))
+    {
+        //完全故障
+        AccPedCD_rUW=0;
+        AccPedCD_rFltUW=0;      //赋油门值为0
+        AccPedCD_stRampUW=1;	//Ramp start
+        AccPedCD_stAPPLatchUW=_DFC_INDEX_FINALLY_DEFECTIVE_STATUS;
+    }
+    else
+    {
+        //非完全故障状态
+	    //检查合理性
+        if(AccPedCD_uUW>=AccPedCD_facDualRelUW_C*AccPedCD_u2UW)
+        {
+            uDiffUW=AccPedCD_uUW-AccPedCD_facDualRelUW_C*AccPedCD_u2UW;
+        }
+        else
+        {
+            uDiffUW=AccPedCD_facDualRelUW_C*AccPedCD_u2UW-AccPedCD_uUW;
+        }
+        
+        if((AccPedCD_uUW>AccPedCD_uSRCMaxUW_C)
+        ||(AccPedCD_uUW<AccPedCD_uSRCMinUW_C)
+        ||(AccPedCD_facDualRelUW_C*AccPedCD_u2UW>AccPedCD_uSRCMaxUW_C)
+        ||(AccPedCD_facDualRelUW_C*AccPedCD_u2UW<AccPedCD_uSRCMinUW_C)
+        ||((DINH_GetFIDState(_DINH_INDEX_FID_ACCPED_NPL)==0)&&(uDiffUW>AccPedCD_uMaxDiffUW_C)))		//双油门合理性校验
+		{
+			//任何一项故障的状态,部分故障,则维持上一循环的值不动
+			AccPedCD_stAPPLatchUW=_DFC_INDEX_PRELIMINARILY_DEFECTIVE_STATUS; 	
+		}
+		else
+		{
+			if((_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_stMaxUB)&&
+            (_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_st2MaxUB)&&
+            (_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_stMinUB)&&
+            (_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_st2MinUB)&&
+            (_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_stNplUB))
+			{
+				//完全正常的状态
+				AccPedCD_stAPPLatchUW=_DFC_INDEX_FINALLY_HEALED_STATUS; 
+				AccPedCD_Ramp();
+	        }
+	        else
+	        {
+	        	//或部分恢复
+	        	AccPedCD_stAPPLatchUW=_DFC_INDEX_PRELIMINARILY_HEALED_STATUS; 
+	        }
+		}
+		AccPedCD_Filter();
+    }
+}
+
+/***********************************************
+ * 函数:单油门信号处理
+ * 功能:向DSM模块请求信息,判断当前状态为正常/部分正常/完全故障,根据状态进行更新操作。
+ * 结构:请求故障状态信息,判断当前状态后,决定油门信号更新/清零/保持不变。
+***********************************************/
+void AccPedCD_SingleAnalog(void)
+{    
+    Fid_APP1UB_mp=DINH_GetFIDState(_DINH_INDEX_FID_APP1);
+    
+    //第一油门SRC HIGH故障
+    AccPedCD_stMaxUB=DFC_GetDebState(_DFC_INDEX_ACCPED_SIGHIGH);
+    
+    //第一油门SRC LOW故障
+    AccPedCD_stMinUB=DFC_GetDebState(_DFC_INDEX_ACCPED_SIGLOW);
+        
+    
+    if((_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_stMaxUB)||        
+        (_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_stMinUB)||
+        (Fid_APP1UB_mp==1))
+    {
+        //完全故障
+        AccPedCD_rUW=0;
+        AccPedCD_rFltUW=0;      //赋油门值为0
+        AccPedCD_stRampUW=1;	//Ramp start
+        AccPedCD_stAPPLatchUW=_DFC_INDEX_FINALLY_DEFECTIVE_STATUS;
+    }
+    else
+    {
+        if((AccPedCD_uUW>AccPedCD_uSRCMaxUW_C)
+        ||(AccPedCD_uUW<AccPedCD_uSRCMinUW_C))		//单油门合理性校验
+		{
+			//任何一项故障的状态,部分故障,则维持上一循环的值不动
+			AccPedCD_stAPPLatchUW=_DFC_INDEX_PRELIMINARILY_DEFECTIVE_STATUS; 	
+		}
+		else
+		{
+			if(	(_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_stMaxUB)&&
+            	(_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_stMinUB))
+			{
+				//完全正常的状态
+				AccPedCD_stAPPLatchUW=_DFC_INDEX_FINALLY_HEALED_STATUS;
+				AccPedCD_Ramp(); 
+	        }
+	        else
+	        {
+	        	//或部分恢复
+	        	AccPedCD_stAPPLatchUW=_DFC_INDEX_PRELIMINARILY_HEALED_STATUS; 
+	        }
+		}
+		AccPedCD_Filter();
+    }
+}
+
+/***********************************************
+ * 函数:怠速开关油门信号处理
+ * 功能:向DSM模块请求信息,判断当前状态为正常/部分正常/完全故障,根据状态进行更新操作。
+ * 结构:请求故障状态信息,判断当前状态后,决定油门信号更新/清零/保持不变。
+***********************************************/
+void AccPedCD_Switch(void)
+{
+    
+    //带怠速开关的油门
+    Fid_APP1UB_mp=DINH_GetFIDState(_DINH_INDEX_FID_APP1);
+    //第一油门SRC HIGH故障
+    AccPedCD_stMaxUB=DFC_GetDebState(_DFC_INDEX_ACCPED_SIGHIGH);
+    
+    //第一油门SRC LOW故障
+    AccPedCD_stMinUB=DFC_GetDebState(_DFC_INDEX_ACCPED_SIGLOW);
+    
+    //第一油门NPL故障
+    AccPedCD_stNplUB=DFC_GetDebState(_DFC_INDEX_ACCPED_SIGHNPL);
+    
+    if((_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_stMaxUB)||        
+        (_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_stMinUB)||                
+        (_DFC_INDEX_FINALLY_DEFECTIVE_STATUS==AccPedCD_stNplUB)||
+        (Fid_APP1UB_mp==1))
+    {
+        //完全故障
+        AccPedCD_rUW=0;
+        AccPedCD_rFltUW=0;      //赋油门值为0
+        AccPedCD_stRampUW=1;	//Ramp start
+        AccPedCD_stAPPLatchUW=_DFC_INDEX_FINALLY_DEFECTIVE_STATUS;
+    }
+    else
+    {
+        if((AccPedCD_uUW>AccPedCD_uSRCMaxUW_C)
+        ||(AccPedCD_uUW<AccPedCD_uSRCMinUW_C)	
+        ||(	(1==AccPedCD_bPlausEnUW_C)&&
+        	(((0==AccPedCD_bIdleSwtUB)&&(AccPedCD_uUW>AccPedCD_uHighLimIdleUW_C))||
+            ((1==AccPedCD_bIdleSwtUB)&&(AccPedCD_uUW<AccPedCD_uLowLimIdleUW_C)))))
+		{
+			//任何一项故障的状态,部分故障,则维持上一循环的值不动
+			AccPedCD_stAPPLatchUW=_DFC_INDEX_PRELIMINARILY_DEFECTIVE_STATUS; 	
+		}
+		else
+		{
+	        if((_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_stMaxUB)&&        
+	           (_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_stMinUB)&&                        
+	           (_DFC_INDEX_FINALLY_HEALED_STATUS==AccPedCD_stNplUB))
+			{
+				//完全正常的状态
+				AccPedCD_stAPPLatchUW=_DFC_INDEX_FINALLY_HEALED_STATUS; 
+				AccPedCD_Ramp(); 
+	        }
+	        else
+	        {
+	        	//或部分恢复
+	        	AccPedCD_stAPPLatchUW=_DFC_INDEX_PRELIMINARILY_HEALED_STATUS; 
+	        }
+		}
+		AccPedCD_Filter();
+    }
+}
+
+/***********************************************
+ * 函数:更新油门信号入口函数
+ * 功能:根据不同模式,计算并更新油门信号值。
+ * 结构:根据标定变量判断当前状态为单油门/双油门/带怠速开关/不使用,确定配置后,再对通过相应函数更新信号。
+***********************************************/
+void AccPedCD_Update(void)
+{
+    if(AccPedCD_bDigEnUW_C==1)
+    {    
+        AccPedCD_rFltUW=AccPedCD_rFltUW_C;  //数字油门模式 
+        AccPedCD_rUW=AccPedCD_rFltUW_C;  //滤波前油门也用数字油门接管     
+    }
+    else
+    {
+		if(1==AccPedCD_swtUseUW_C)
+		{
+			//双油门
+
+			//油门1
+			AccPedCD_uOldUW=AccPedCD_uUW;
+			AccPedCD_uUW=ATDDrv_GetChanResult(_ATD_INDEX_ACCPED1_CHAN);
+
+			//油门2
+			AccPedCD_u2UW=ATDDrv_GetChanResult(_ATD_INDEX_ACCPED2_CHAN);
+
+			AccPedCD_rRawUW=Intpol_u16u16((uint16 *)&AccPedCD_rUW_CUR,AccPedCD_uUW);
+
+			AccPedCD_DualAnalog();
+
+		}
+		else
+		{
+			if(2==AccPedCD_swtUseUW_C)
+			{
+				//油门和怠速开关
+
+				//油门1
+				AccPedCD_uOldUW=AccPedCD_uUW;
+				AccPedCD_uUW=ATDDrv_GetChanResult(_ATD_INDEX_ACCPED1_CHAN);
+
+				//得到怠速开关状态
+				AccPedCD_bIdleRawUB=DINDrv_GetChanState(_DIN_INDEX_BAK1_CHAN);
+
+
+				if(0==AccPedCD_idxIdleSwtTypeUW_C)
+				{
+					//常地型,AccPedCD_bIdleRawUB为1表明踏板踩下,在全负荷位置
+					AccPedCD_bIdleSwtUB=AccPedCD_bIdleRawUB;
+				}
+				else
+				{
+					//常电型,AccPedCD_bIdleRawUB为0表明踏板踩下,在全负荷位置
+					AccPedCD_bIdleSwtUB=(!AccPedCD_bIdleRawUB);
+				}
+
+				AccPedCD_rRawUW=Intpol_u16u16((uint16 *)&AccPedCD_rUW_CUR,AccPedCD_uUW);
+
+				AccPedCD_Switch();
+			}
+			else
+			{
+				//单油门
+
+				//油门1
+				AccPedCD_uOldUW=AccPedCD_uUW;
+				AccPedCD_uUW=ATDDrv_GetChanResult(_ATD_INDEX_ACCPED1_CHAN);
+
+				AccPedCD_rRawUW=Intpol_u16u16((uint16 *)&AccPedCD_rUW_CUR,AccPedCD_uUW);
+
+				AccPedCD_SingleAnalog();
+			}
+
+		}
+    }
+    
+    
+    AccPedCD_idxDeltaMonUB=(uint8)((AccPedCD_idxDeltaMonUB+1)%_ACCPED_DELTA_MONITOR_TIME);
+    if(AccPedCD_idxDeltaMonUB==0)
+    {        
+        //加速踏板斜率计算
+        
+        AccPedCD_drUnFltW=AccPedCD_rFltUW-AccPedCD_rOldUW;        
+        AccPedCD_rOldUW=AccPedCD_rFltUW;     
+    }
+          
+}
+
+/***********************************************
+ * 函数:油门相关故障监控
+ * 功能:检测油门信号是否超限值/相关功能是否被禁用/信号值是否合理,如出现异常向DSM模块报告异常水平。
+ * 结构:根据标定变量判断当前状态为单油门/双油门/带怠速开关/不使用,确定配置后,再对相应油门信号进行检测。
+***********************************************/
+void AccPedCD_Monitor(void)
+{
+    uint16 uDiffUW;
+    
+        
+    //AccPedCD_swtUseUW_C
+    //0:  不使用
+    //1:  双油门
+    //2: 带怠速开关
+    
+    if(1==AccPedCD_swtUseUW_C) 
+    {
+         //双油门       
+        if(AccPedCD_uUW>AccPedCD_uSRCMaxUW_C)
+        {
+        	/*对应DFC故障:油门踏板1信号过高*/
+            DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHIGH,_DDRC_MASK_ANA_FT_LV_ERROR);    //Max Error     
+        }
+        else
+        {
+            DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHIGH,_DDRC_MASK_ANA_FT_LV_OK);  
+        }
+        
+        if(AccPedCD_uUW<AccPedCD_uSRCMinUW_C)
+        {
+        	/*对应DFC故障:油门踏板1信号过低*/
+            DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGLOW,_DDRC_MASK_ANA_FT_LV_ERROR);     //Min Error    
+        }
+        else
+        {                   
+            DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGLOW,_DDRC_MASK_ANA_FT_LV_OK);
+        }
+        
+        
+        if(AccPedCD_facDualRelUW_C*AccPedCD_u2UW>AccPedCD_uSRCMaxUW_C)
+        {
+        	/*对应DFC故障:油门踏板2信号过高*/
+            DFC_ReportFaultLevel(_DFC_INDEX_ACCPED2_SIGHIGH,_DDRC_MASK_ANA_FT_LV_ERROR);    //Max Error     
+        }
+        else
+        {
+            DFC_ReportFaultLevel(_DFC_INDEX_ACCPED2_SIGHIGH,_DDRC_MASK_ANA_FT_LV_OK);  
+        }
+        
+        if(AccPedCD_facDualRelUW_C*AccPedCD_u2UW<AccPedCD_uSRCMinUW_C)
+        {
+        	/*对应DFC故障:油门踏板2信号过低*/
+            DFC_ReportFaultLevel(_DFC_INDEX_ACCPED2_SIGLOW,_DDRC_MASK_ANA_FT_LV_ERROR);     //Min Error    
+        }
+        else
+        {                   
+            DFC_ReportFaultLevel(_DFC_INDEX_ACCPED2_SIGLOW,_DDRC_MASK_ANA_FT_LV_OK);
+        }
+        
+        //双油门合理性校验
+        /*油门相关功能是否被禁用*/
+        if(DINH_GetFIDState(_DINH_INDEX_FID_ACCPED_NPL)==0)
+        {
+            //检查合理性
+            if(AccPedCD_uUW>=AccPedCD_facDualRelUW_C*AccPedCD_u2UW)
+            {
+                uDiffUW=AccPedCD_uUW-AccPedCD_facDualRelUW_C*AccPedCD_u2UW;
+            }
+            else
+            {
+                uDiffUW=AccPedCD_facDualRelUW_C*AccPedCD_u2UW-AccPedCD_uUW;
+            }
+            /*对应DFC故障:油门信号不合理*/
+            if(uDiffUW>AccPedCD_uMaxDiffUW_C)
+            {
+                DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHNPL,_DDRC_MASK_ANA_FT_LV_ERROR);     //NPL Error   
+            }
+            else
+            {
+                DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHNPL,_DDRC_MASK_ANA_FT_LV_OK); 
+            }
+        }
+        
+    }
+    else
+    {
+        if(2==AccPedCD_swtUseUW_C) 
+        {
+            //带怠速开关的油门
+            
+            if(AccPedCD_uUW>AccPedCD_uSRCMaxUW_C)
+            {
+                DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHIGH,_DDRC_MASK_ANA_FT_LV_ERROR);    //Max Error     
+            }
+            else
+            {
+                DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHIGH,_DDRC_MASK_ANA_FT_LV_OK);  
+            }
+            
+            if(AccPedCD_uUW<AccPedCD_uSRCMinUW_C)
+            {
+                DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGLOW,_DDRC_MASK_ANA_FT_LV_ERROR);     //Min Error    
+            }
+            else
+            {                   
+                DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGLOW,_DDRC_MASK_ANA_FT_LV_OK);
+            }
+            
+            //怠速开关和油门的诊断             
+            if(1==AccPedCD_bPlausEnUW_C)
+            {
+                //如果合理性检测使能
+                    
+                if(((0==AccPedCD_bIdleSwtUB)&&(AccPedCD_uUW>AccPedCD_uHighLimIdleUW_C))||
+                    ((1==AccPedCD_bIdleSwtUB)&&(AccPedCD_uUW<AccPedCD_uLowLimIdleUW_C)))
+                {
+                    //油门电压大于高限值后,怠速开关必须处于Full Load状态
+                    //油门电压小于低限制后,怠速开关必须处于Low Idle状态
+                    DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHNPL,_DDRC_MASK_ANA_FT_LV_ERROR);     //NPL Error     
+                }
+                else
+                {
+                    DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHNPL,_DDRC_MASK_ANA_FT_LV_OK); 
+                }
+            }
+            
+        }
+        else
+        {
+            if(3==AccPedCD_swtUseUW_C) 
+            {
+                //单油门       
+                
+                if(AccPedCD_uUW>AccPedCD_uSRCMaxUW_C)
+                {
+                    DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHIGH,_DDRC_MASK_ANA_FT_LV_ERROR);    //Max Error     
+                }
+                else
+                {
+                    DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGHIGH,_DDRC_MASK_ANA_FT_LV_OK);  
+                }
+                
+                if(AccPedCD_uUW<AccPedCD_uSRCMinUW_C)
+                {
+                    DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGLOW,_DDRC_MASK_ANA_FT_LV_ERROR);     //Min Error    
+                }
+                else
+                {                   
+                    DFC_ReportFaultLevel(_DFC_INDEX_ACCPED_SIGLOW,_DDRC_MASK_ANA_FT_LV_OK);
+                }
+            }
+        }
+    }
+}
+
+#endif //_SAMPLE_CODE_
+/*********************************************************************************************/

+ 93 - 0
System/Vehicle/AccPedCD/AccPedCD.h

@@ -0,0 +1,93 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2018 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车管理_车辆运动
+* 文件名: AccPedCD.h
+* 功能描述 : 油门踏板模块驱动头文件
+* 引用记录:
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2018.01.12   00.01.00    李中               第一版
+*******************************************************************************/
+
+#ifndef __ACCPEDCD_H
+
+    #define __ACCPEDCD_H
+
+    #include "Std_Types.h"
+
+    /*********************************************************************************************/
+    /*样例代码*/
+    #ifdef _SAMPLE_CODE_
+
+    /*************************************************************/
+	/*标定数据区开始(请不要在该区域加入非标定数据相关的内容)   */
+
+    typedef struct
+    {
+        uint16 xSize;
+        uint16 xDist[4];
+        uint16 values[4];
+    }AccPedCD_rUW_CUR_TYPE;
+
+    #define MAPDATA_START_SEC_VAR_CONST
+    #include "MemMap.h"
+
+    /*AccPedCD_Cal*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_uSRCMaxUW_C;  /*AccPedCD_uSRCMaxUW_C,最大值*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_uSRCMinUW_C;  /*AccPedCD_uSRCMinUW_C,最小值*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_uMaxDiffUW_C;  /*AccPedCD_uMaxDiffUW_C,AccPed2与AccPed1最大相差多少...*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_uHighLimIdleUW_C;  /*AccPedCD_uHighLimIdleUW_C,怠速开关高限*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_uLowLimIdleUW_C;  /*AccPedCD_uLowLimIdleUW_C,怠速开关低限*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_bPlausEnUW_C;  /*AccPedCD_bPlausEnUW_C,油门合理性检测是否启用*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_rFltUW_C;  /*数字油门,AccPedCD_rFltUW_C*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_bDigEnUW_C;  /*油门控制模式,AccPedCD_bDigEnUW_C, 1为正常控制, 0为数字油门*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_swtUseUW_C;  /*AccPedCD_swtUseUW_C,油门传感器类型,1:双油门,2:怠速开关,3:单油门*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_idxIdleSwtTypeUW_C;  /*AccPedCD_idxIdleSwtTypeUW_C,怠速开关类型 ,0:接电源常开,1:接电源常闭,2:接地常开,3:接地常闭*/
+    extern PRAGMA_MAPDATA const AccPedCD_rUW_CUR_TYPE AccPedCD_rUW_CUR;  /*油门标定,AccPedCD_rUW_CUR,系数256,单位%*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_rThresFltLowPosUW_C;  /*AccPedCD_rThresFltLowPosUW_C,小油门限*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_rThresFltMidPosUW_C;  /*AccPedCD_rThresFltMidPosUW_C,中油门限*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_facT1LowNegUW_C;  /*AccPedCD_facT1LowNegUW_C,小油门负向滤波系数*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_facT1MidNegUW_C;  /*AccPedCD_facT1MidNegUW_C,中油门负向滤波系数*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_facT1HighNegUW_C;  /*AccPedCD_facT1HighNegUW_C,大油门负向滤波系数*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_facT1LowPosUW_C;  /*AccPedCD_facT1LowPosUW_C,小油门正向滤波系数*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_facT1MidPosUW_C;  /*AccPedCD_facT1MidPosUW_C,中油门正向滤波系数*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_facT1HighPosUW_C;  /*AccPedCD_facT1HighPosUW_C,大油门正向滤波系数*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_duThresStationaryUW_C;  /*AccPedCD_duThresStationaryUW_C,稳态油门变化范围*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_facT1StationaryUW_C;  /*AccPedCD_facT1StationaryUW_C,稳态滤波系数*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_facDualRelUW_C;  /*AccPedCD_facDualRelUW_C, 双油门两路信号的比例关系,第一路/第二路*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_drHealRmpUp_C;  /*AccPedCD_drHealRmpUp_C; 加速踏板故障恢复正向Ramp步长。APPCD_drHealRmpUp_C: healing ramp pos. slope<value>*/
+    extern PRAGMA_MAPDATA const uint16 AccPedCD_drHealRmpDwn_C;  /*AccPedCD_drHealRmpDwn_C;  故障恢复时向下Ramp步长; APPCD_drHealRmpDwn_C: healing ramp neg. slope<value>*/
+
+    #define MAPDATA_STOP_SEC_VAR_CONST
+    #include "MemMap.h"
+
+	/*标定数据区结束                                             */
+	/*************************************************************/
+    
+    #define _ACCPED_DELTA_MONITOR_TIME  100 /*油门斜率计算频率为1s*/
+
+    void AccPedCD_Init(void);
+    
+    void AccPedCD_Filter(void);
+    
+    void AccPedCD_DualAnalog(void);//双油门
+    void AccPedCD_Switch(void); //带怠速开关的油门
+    void AccPedCD_SingleAnalog(void); //单油门  
+    void AccPedCD_Update(void);
+    void AccPedCD_Monitor(void);
+
+    extern uint16 AccPedCD_rUW;		//滤波前加速踏板位置    
+    extern uint16 AccPedCD_rFltUW;  //油门踏板位置
+    extern uint16 AccPedCD_rRawUW;  //由电压值直接查表得到的位置
+    extern uint16 AccPedCD_uUW,AccPedCD_u2UW;
+    extern sint16 AccPedCD_drUnFltW; //油门踏板斜率
+    extern uint16 AccPedCD_rOldUW; //上一时刻油门踏板,用于斜率计算
+    
+    #endif //_SAMPLE_CODE_
+    /*********************************************************************************************/
+    
+#endif 

BIN
System/Vehicle/AccPedCD/DSM上层接口函数说明.pdf


BIN
System/Vehicle/AccPedCD/DSM标定说明.pdf


+ 172 - 0
System/Vehicle/Communication/CANNet.c

@@ -0,0 +1,172 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2015 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车管理
+* 文件名: CANNet.c
+* 功能描述 : CAN总线管理
+* 引用记录:
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2011.07.14          00.01.00      李中     第一版                                           
+*******************************************************************************/
+
+#include "HardwareLib.h"
+#include "CANNet.h"
+#include "AccPedCD.h"
+
+
+MCANDrv_infoMsgConfS_TYPE CANNet_infoMsgTxConfSA[3];
+
+uint16 CANNet_idxSchedUB;
+
+MCANDrv_infoMsgConfS_TYPE CANNet_InfoRxMsgConfSA[128];
+uint8 CANNet_datRxMsgBufM[128][9];
+
+uint32 CanRecvTest = 0;
+uint32 CanRecvTestDelay = 0;
+
+
+void CANNet_Init(void)
+{
+    /*示例代码*/
+
+    /*各个CAN节点初始化*/
+    MCANDrv_SetBaudrate(_CAN_INDEX_CAN0, 250000);
+    MCANDrv_SetCANMode(_CAN_INDEX_CAN0, MCAN_NODEMODE_BUF);
+    MCANDrv_SetCallbackFunc(_CAN_INDEX_CAN0, (pFunc_RxMsgCallback)CANNet_RecvMsgCAN0, NULL_PTR);
+
+    MCANDrv_SetBaudrate(_CAN_INDEX_CAN1, 250000);
+    MCANDrv_SetCANMode(_CAN_INDEX_CAN1, MCAN_NODEMODE_BUF);
+    MCANDrv_SetCallbackFunc(_CAN_INDEX_CAN1, (pFunc_RxMsgCallback)CANNet_RecvMsgCAN1, NULL_PTR);
+
+    /*第2路CAN用于CCP、UDS协议,由底层配置*/
+
+    /*接收报文初始化*/
+//    CANNet_InfoRxMsgConfSA[0].infoMsgIDUI = 0x1F000023UL;
+//    CANNet_InfoRxMsgConfSA[0].infoMsgParU.B.CAN = 0;
+//    CANNet_InfoRxMsgConfSA[0].infoMsgParU.B.MO = 0;
+//    CANNet_InfoRxMsgConfSA[0].infoMsgParU.B.DIR = _MCAN_DIR_RX;
+//    CANNet_InfoRxMsgConfSA[0].infoMsgParU.B.DLC = 8;
+//    CANNet_InfoRxMsgConfSA[0].infoMsgParU.B.IDE = _MCAN_IDE_EXT;
+//    MCANDrv_SetMsgObj(CANNet_InfoRxMsgConfSA[0], CANNet_RecvMsgCAN0);
+
+    /*发送报文初始化*/
+    CANNet_infoMsgTxConfSA[0].infoMsgIDUI = 0x1F000024UL;
+    CANNet_infoMsgTxConfSA[0].infoMsgParU.B.CAN = 0;
+    CANNet_infoMsgTxConfSA[0].infoMsgParU.B.MO = 0;
+    CANNet_infoMsgTxConfSA[0].infoMsgParU.B.DIR = _MCAN_DIR_TX;
+    CANNet_infoMsgTxConfSA[0].infoMsgParU.B.DLC = 8;
+    CANNet_infoMsgTxConfSA[0].infoMsgParU.B.IDE = _MCAN_IDE_EXT;
+    //MCANDrv_SetMsgObj(CANNet_infoMsgTxConfSA[0], NULL_PTR);
+
+    CANNet_infoMsgTxConfSA[1].infoMsgIDUI = 0x1F000025UL;
+    CANNet_infoMsgTxConfSA[1].infoMsgParU.B.CAN = 1;
+    CANNet_infoMsgTxConfSA[1].infoMsgParU.B.MO = 1;
+    CANNet_infoMsgTxConfSA[1].infoMsgParU.B.DIR = _MCAN_DIR_TX;
+    CANNet_infoMsgTxConfSA[1].infoMsgParU.B.DLC = 8;
+    CANNet_infoMsgTxConfSA[1].infoMsgParU.B.IDE = _MCAN_IDE_EXT;
+    //MCANDrv_SetMsgObj(CANNet_infoMsgTxConfSA[1], NULL_PTR);
+
+    CANNet_infoMsgTxConfSA[2].infoMsgIDUI = 0x1F000026UL;
+	CANNet_infoMsgTxConfSA[2].infoMsgParU.B.CAN = 2;
+	CANNet_infoMsgTxConfSA[2].infoMsgParU.B.MO = 2;
+	CANNet_infoMsgTxConfSA[2].infoMsgParU.B.DIR = _MCAN_DIR_TX;
+	CANNet_infoMsgTxConfSA[2].infoMsgParU.B.DLC = 8;
+	CANNet_infoMsgTxConfSA[2].infoMsgParU.B.IDE = _MCAN_IDE_EXT;
+}
+
+//CAN0接收消息处理函数
+void CANNet_RecvMsgCAN0(MCANDrv_infoMsgS_TYPE infoMsgS)
+{
+    //CAN接收样例
+    uint8 idxIncUB,idxByteUB;
+
+    for(idxIncUB=0;idxIncUB<128;idxIncUB++)
+    {
+        if(infoMsgS.infoConfS.infoMsgIDUI == CANNet_InfoRxMsgConfSA[idxIncUB].infoMsgIDUI)
+        {
+            for(idxByteUB=0;idxByteUB<8;idxByteUB++)
+            {
+                CANNet_datRxMsgBufM[idxIncUB][idxByteUB]=infoMsgS.datMsgUBA[idxByteUB];
+            }
+
+            CANNet_datRxMsgBufM[idxIncUB][8]++;
+        }
+    }
+    CanRecvTestDelay = SysCon_tiRunHighResiUI;
+    CanRecvTest  = CanRecvTestDelay - CanRecvTest;
+}
+//CAN1接收消息处理函数
+void CANNet_RecvMsgCAN1(MCANDrv_infoMsgS_TYPE infoMsgS)
+{
+    //CAN接收样例
+    uint8 idxIncUB,idxByteUB;
+
+    for(idxIncUB=0;idxIncUB<128;idxIncUB++)
+    {
+        if(infoMsgS.infoConfS.infoMsgIDUI == CANNet_InfoRxMsgConfSA[idxIncUB].infoMsgIDUI)
+        {
+            for(idxByteUB=0;idxByteUB<8;idxByteUB++)
+            {
+                CANNet_datRxMsgBufM[idxIncUB][idxByteUB]=infoMsgS.datMsgUBA[idxByteUB];
+            }
+
+            CANNet_datRxMsgBufM[idxIncUB][8]++;
+        }
+    }
+}
+//发送消息管理
+void CANNet_Manage1ms(void)
+{
+    MCANDrv_infoMsgS_TYPE infoMsgS;
+    
+    switch(CANNet_idxSchedUB)
+    {
+        case 0:
+        	CANNet_infoMsgTxConfSA[2].infoMsgIDUI = 0x7F0;
+        	infoMsgS.infoConfS = CANNet_infoMsgTxConfSA[2];
+			infoMsgS.datMsgUBA[0] = (uint8)(PressureValue>>24);
+			infoMsgS.datMsgUBA[1] = (uint8)(PressureValue>>16);
+			infoMsgS.datMsgUBA[2] = (uint8)(PressureValue)>>8;
+			infoMsgS.datMsgUBA[3] = (uint8)(PressureValue);
+			infoMsgS.datMsgUBA[4] = (uint8)(Distence1>>8);
+			infoMsgS.datMsgUBA[5] = (uint8)(Distence1);
+			infoMsgS.datMsgUBA[6] = (uint8)(Distence2>>8);
+			infoMsgS.datMsgUBA[7] = (uint8)(Distence2);
+			MCANDrv_SendMsg(infoMsgS);
+            break;
+        case 1:
+        	CANNet_infoMsgTxConfSA[2].infoMsgIDUI = 0x7F1;
+        	infoMsgS.infoConfS = CANNet_infoMsgTxConfSA[2];
+			infoMsgS.datMsgUBA[0] = (uint8)(Switch1);
+			infoMsgS.datMsgUBA[1] = (uint8)(Switch2);
+			infoMsgS.datMsgUBA[2] = 0xFF;
+			infoMsgS.datMsgUBA[3] = 0xFF;
+			infoMsgS.datMsgUBA[4] = 0xFF;
+			infoMsgS.datMsgUBA[5] = 0xFF;
+			infoMsgS.datMsgUBA[6] = 0xFF;
+			infoMsgS.datMsgUBA[7] = 0xFF;
+			MCANDrv_SendMsg(infoMsgS);
+            break;
+        case 2:
+        	CANNet_infoMsgTxConfSA[2].infoMsgIDUI = 0x7F2;
+        	infoMsgS.infoConfS = CANNet_infoMsgTxConfSA[2];
+			infoMsgS.datMsgUBA[0] = ControlState;
+			infoMsgS.datMsgUBA[1] = 0xFF;
+			infoMsgS.datMsgUBA[2] = 0xFF;
+			infoMsgS.datMsgUBA[3] = 0xFF;
+			infoMsgS.datMsgUBA[4] = (uint8)(Control_Times>>24);
+			infoMsgS.datMsgUBA[5] = (uint8)(Control_Times>>16);
+			infoMsgS.datMsgUBA[6] = (uint8)(Control_Times>>8);
+			infoMsgS.datMsgUBA[7] = (uint8)(Control_Times);
+			MCANDrv_SendMsg(infoMsgS);
+			break;
+        default:
+            break;
+    }
+    
+    CANNet_idxSchedUB=(uint16)((CANNet_idxSchedUB+1)%100); //100ms一个完整循环
+}

+ 47 - 0
System/Vehicle/Communication/CANNet.h

@@ -0,0 +1,47 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2015 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车管理
+* 文件名: CANNet.h
+* 功能描述 : CAN总线管理头文件
+* 引用记录:
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2011.07.14          00.01.00      李中     第一版                                           
+*******************************************************************************/
+
+#ifndef __CANNET_H
+    #define __CANNET_H
+
+    #include "Std_Types.h"
+    #include "HardwareLib.h"
+    
+    #define _CAN_INDEX_CAN0     0
+    #define _CAN_INDEX_CAN1     1
+    #define _CAN_INDEX_CAN2     2
+
+    
+    void CANNet_Init(void);
+
+    //接收CAN消息函数接口
+    void CANNet_RecvMsgCAN0(MCANDrv_infoMsgS_TYPE infoMsgS);
+    void CANNet_RecvMsgCAN1(MCANDrv_infoMsgS_TYPE infoMsgS);
+    
+    //发送消息管理
+    void CANNet_Manage1ms(void);
+    
+    
+    extern uint16 CANNet_rAccPedUW;
+    extern uint32 PressureValue;
+    extern uint16 Distence1;
+    extern uint16 Distence2;
+    extern uint8	Switch1;
+    extern uint8	Switch2;
+    extern uint8	ControlState;
+    extern uint32 Control_Times;
+
+
+#endif

+ 243 - 0
System/Vehicle/UDS/UDSInterface.c

@@ -0,0 +1,243 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2015 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车管理
+* 文件名: UDSInterface.c
+* 功能描述 : UDS管理
+* 引用记录:
+* 备注:
+* 修订记录:
+*       日期            版本          作者        描述
+*   2017.07.03          00.01.00      李中     第一版
+*******************************************************************************/
+
+#include "UDSInterface.h"
+#include "HardwareLib.h"
+#include "CANNet.h"
+#include "EOLData.h"
+
+uint8 UDSInterface_CheckServiceCondition(uint8 idxSIDUB, uint8 stSubFuncUB)
+{
+	(void)stSubFuncUB;
+	uint8 bResultUB=1;
+
+	switch(idxSIDUB)
+	{
+		case _UDS_INDEX_COMMAND_SECURITYACCESS:
+			/*27*/
+			bResultUB=1;
+			break;
+
+	    case _UDS_INDEX_COMMAND_ECURESET:
+	        /*ECU Reset*/
+	        bResultUB=1;
+	        break;
+
+		case _UDS_INDEX_COMMAND_WRITEDATABYIDENTIFIER:
+			/*Write Data By Identifier*/
+			bResultUB=1;
+			break;
+
+		case _UDS_INDEX_COMMAND_CONTROLDTCSETTING:
+			/*Control DTC Setting*/
+			bResultUB=1;
+			break;
+
+		case _UDS_INDEX_COMMAND_STARTDIAGNOSTICSESSION:
+		    /*Start Diagnostic Session*/
+//		    if(stSubFuncUB==_UDS_INDEX_DIAG_PROGRAMMING)
+//		    {
+//		        //必须先经过检查编程预条件
+//		        if(UDSInterface_bPrgPrecondChkedUB==1)
+//		        {
+//		            bResultUB=1;
+//		        }
+//		        else
+//		        {
+//		            bResultUB=0;
+//		        }
+//		    }
+//		    else if(stSubFuncUB==_UDS_INDEX_DIAG_DEFAULT)
+//		    {
+//		        UDSInterface_bPrgPrecondChkedUB=0;
+//		    }
+//		    else
+//		    {
+//		    	bResultUB=1;
+//		    }
+			bResultUB=1;
+		    break;
+
+		default:
+			bResultUB=1;
+			break;
+	}
+
+	return bResultUB;
+}
+
+void UDSInterface_GetSeed(uint8 idxSecLvlUB, uint8 * dataSeedUBP)
+{
+//    uint32 datUI;
+
+	switch(idxSecLvlUB)
+	{
+		case _UDS_INDEX_SEC_EXTENTED:
+        	if(idxSecLvlUB==UDS_GetSecLvl())
+        	{
+        		/*如果请求的安全等级已解锁,则发送数值为0的种子*/
+        		dataSeedUBP[0]=0;
+        		dataSeedUBP[1]=0;
+        		dataSeedUBP[2]=0;
+        		dataSeedUBP[3]=0;
+        	}
+        	else
+        	{
+        		dataSeedUBP[0]=11;//11
+        		dataSeedUBP[1]=22;//22
+        		dataSeedUBP[2]=33;//33
+        		dataSeedUBP[3]=44;//44
+        	}
+			break;
+		case _UDS_INDEX_SEC_ANTITHEFT:
+        	if(idxSecLvlUB==UDS_GetSecLvl())
+        	{
+        		/*如果请求的安全等级已解锁,则发送数值为0的种子*/
+        		dataSeedUBP[0]=0;
+        		dataSeedUBP[1]=0;
+        		dataSeedUBP[2]=0;
+        		dataSeedUBP[3]=0;
+        	}
+        	else
+        	{
+        		dataSeedUBP[0]=0x55;
+        		dataSeedUBP[1]=0x66;
+        		dataSeedUBP[2]=0x77;
+        		dataSeedUBP[3]=0x88;
+        	}
+			break;
+        default:
+			dataSeedUBP[0]=0x00;
+			dataSeedUBP[1]=0x00;
+			dataSeedUBP[2]=0x00;
+			dataSeedUBP[3]=0x00;
+            break;
+	}
+}
+
+void UDSInterface_GetKey(uint8 idxSecLvlUB, uint8 * dataSeedUBP, uint8 * dataKeyUBP)
+{
+	uint8 Count; //循环次数
+	uint8 Dir; //循环移位方向,0左移-1右移
+	uint8 Pattern; //模式匹配
+	uint8 Select; //选择MASK
+	uint8 i; //循环计数
+	uint32 seed; //中间转换SEED
+
+	uint32 mask[4]={0x5DEC1836,0x5DEC1836,0x5DEC1836,0x5DEC1836}; //mask表
+	switch(idxSecLvlUB)
+	{
+		case _UDS_INDEX_SEC_EXTENTED:
+		case _UDS_INDEX_SEC_ANTITHEFT:
+			Count=dataSeedUBP[1]&0x0F;
+			Select=(dataSeedUBP[3]&0x30)>>4;
+
+			seed=((uint32)dataSeedUBP[0]<<24)+((uint32)dataSeedUBP[1]<<16)+((uint32)dataSeedUBP[2]<<8)+((uint32)dataSeedUBP[3]);
+
+			for(i=0;i<Count;i++)
+			{
+				Pattern=((uint8)seed)&0x07;
+				Dir=(((uint8)seed)&0x08)>>3;
+
+				if(Pattern!=0b101)
+				{
+					if(Dir==1)
+					{
+						seed=seed/2+((seed&0x00000001)<<31);//右移
+					}
+					else
+					{
+						seed=seed*2+((seed&0x80000000)>>31);//左移
+					}
+				}
+				else
+				{
+					break;
+				}
+			}
+			seed=seed^mask[Select];
+			for(i=0;i<4;i++)
+			{
+				dataKeyUBP[i]=(uint8)(seed>>((3-i)*8));
+			}
+			break;
+        default:
+            break;
+	}
+}
+
+/*0x31 例程控制回调函数样例*/
+uint8 UDSInterface_RoutineTestCallback(uint16 numRecvLenUW, uint8 * datRecvBuffUBP, uint16 * numSendLenUWP, uint8 * datSendBuffUBP)
+{
+    if(numRecvLenUW>3)
+    {
+        switch(datRecvBuffUBP[0]&0x7F) //suppressPosRspMsgIndicationBit supported
+        {
+            case _UDS_ROUTINECONTROL_START:
+                break;
+            case _UDS_ROUTINECONTROL_STOP:
+                break;
+            case _UDS_ROUTINECONTROL_REQUESTRESULTS:
+                break;
+            default:
+                break;
+        }
+    }
+    else
+    {
+        return _UDS_INDEX_ERROR_INVALIDFORMAT;
+    }
+
+    *numSendLenUWP=4;
+    datSendBuffUBP[0]=0x11;
+    datSendBuffUBP[1]=0x22;
+    datSendBuffUBP[2]=0x33;
+    datSendBuffUBP[3]=0x44;
+
+    return 0;
+}
+
+/*0x2F 例程控制回调函数样例*/
+uint8 UDSInterface_IOControlCallback(uint16 numRecvLenUW, uint8 * datRecvBuffUBP, uint16 * numSendLenUWP, uint8 * datSendBuffUBP)
+{
+    if(numRecvLenUW>3)
+    {
+        switch(datRecvBuffUBP[0]&0x7F) //suppressPosRspMsgIndicationBit supported
+        {
+            case _UDS_ROUTINECONTROL_START:
+                break;
+            case _UDS_ROUTINECONTROL_STOP:
+                break;
+            case _UDS_ROUTINECONTROL_REQUESTRESULTS:
+                break;
+            default:
+                break;
+        }
+    }
+    else
+    {
+        return _UDS_INDEX_ERROR_INVALIDFORMAT;
+    }
+
+    *numSendLenUWP=4;
+    datSendBuffUBP[0]=0x11;
+    datSendBuffUBP[1]=0x22;
+    datSendBuffUBP[2]=0x33;
+    datSendBuffUBP[3]=0x44;
+
+    return 0;
+}
+
+

+ 195 - 0
System/Vehicle/UDS/UDSInterface.h

@@ -0,0 +1,195 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2015 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车管理
+* 文件名: UDSInterface.h
+* 功能描述 : UDS管理头文件
+* 引用记录:
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2017.07.03          00.01.00      李中     第一版
+*******************************************************************************/
+
+#ifndef __UDSINTERFACE_G
+    #define __UDSINTERFACE_G
+
+    //#include "Std_Types.h"  //19.12.16day, This is a bad move due to unknown error 把uint16的定义copy于此
+		typedef unsigned char boolean;
+
+		typedef signed char sint8;
+		typedef unsigned char uint8;
+		typedef signed short sint16;
+		typedef unsigned short uint16;
+		typedef signed long sint32;
+		typedef unsigned long uint32;
+		typedef float float32;
+
+		typedef unsigned long uint8_least;
+		typedef unsigned long uint16_least;
+		typedef unsigned long uint32_least;
+
+		typedef signed long sint8_least;
+		typedef signed long sint16_least;
+		typedef signed long sint32_least;
+//******************************This is a bad move due to unknown error 把uint16的定义copy于此
+
+    /*UDS错误消息定义*/
+    #define _UDS_INDEX_ERROR_GENERALREJECT 0x10
+    #define _UDS_INDEX_ERROR_SERVICENOTSUPPORTED 0x11
+    #define _UDS_INDEX_ERROR_SUBFUNCTIONNOTSUPPORTED 0x12
+    #define _UDS_INDEX_ERROR_INVALIDFORMAT 0x13
+    #define _UDS_INDEX_ERROR_BUSYREPEATREQUEST 0x21
+    #define _UDS_INDEX_ERROR_CONDITIONNOTCORRECT 0x22
+    #define _UDS_INDEX_ERROR_ROUTINENOTCOMPLETEORSERVICEINPROCESS 0x23
+	#define _UDS_INDEX_ERROR_REQUESTSEQUENCEERROR 0x24
+    #define _UDS_INDEX_ERROR_REQUESTOUTOFRANGE 0x31
+    #define _UDS_INDEX_ERROR_SECURITYACCESSDENIED 0x33
+    #define _UDS_INDEX_ERROR_INVALIDKEY 0x35
+    #define _UDS_INDEX_ERROR_EXCEEDNUMBEROFATTEMPS 0x36
+    #define _UDS_INDEX_ERROR_TIMEDELAYNOTEXPIRED 0x37
+    #define _UDS_INDEX_ERROR_DOWNLOADNOTACCEPTED 0x40
+    #define _UDS_INDEX_ERROR_IMPROPERDOWNLOADTYPE 0x41
+    #define _UDS_INDEX_ERROR_CANNOTDOWNLOADTOSPECIFIEDADDRESS 0x42
+    #define _UDS_INDEX_ERROR_CANNOTDOWNLOADNUMBEROFBYTESREQUESTED 0x43
+    #define _UDS_INDEX_ERROR_UPLOADNOTACCEPTED 0x50
+    #define _UDS_INDEX_ERROR_IMPROPERUPLOADTYPE 0x51
+    #define _UDS_INDEX_ERROR_CANNOTUPLOADTOSPECIFIEDADDRESS 0x52
+    #define _UDS_INDEX_ERROR_CANNOTUPLOADNUMBEROFBYTESREQUESTED 0x53
+    #define _UDS_INDEX_ERROR_BLOCKTRANSFERDATACHECKSUMERROR 0x77
+	#define _UDS_INDEX_ERROR_SUBFUNCTIONNOTSUPPORTEDINACTIVESESSION 0x7E
+	#define _UDS_INDEX_ERROR_SERVICENOTSUPPORTEDINACTIVESESSION 0x7F
+    #define _UDS_INDEX_ERROR_SERVICENOTSUPPORTEDINACTIVEDIAGNOSTICMODE 0x80
+    #define _UDS_INDEX_ERROR_CHECKSUMERROR 0xFA
+    #define _UDS_INDEX_ERROR_ECUERASINGFLASH 0xFB
+    #define _UDS_INDEX_ERROR_ECUPROGRAMMINGFLASH 0xFC
+    #define _UDS_INDEX_ERROR_ERASINGERROR 0xFD
+    #define _UDS_INDEX_ERROR_PROGRAMMINGERROR 0xFE
+    
+	/*UDS安全等级定义*/
+    #define _UDS_NUM_MODE_MAX 3
+    #define _UDS_INDEX_SEC_LOCK 0
+    #define _UDS_INDEX_SEC_EXTENTED 1
+	#define _UDS_INDEX_SEC_ANTITHEFT 2
+    #define _UDS_INDEX_SEC_PROGRAMMING 3
+
+	/*UDS RoutineControl Control Type*/
+	#define _UDS_ROUTINECONTROL_START			0x01
+	#define _UDS_ROUTINECONTROL_STOP			0x02
+	#define _UDS_ROUTINECONTROL_REQUESTRESULTS	0x03
+
+    /*UDS 命令定义*/
+    #define _UDS_INDEX_COMMAND_NULL 0
+
+    /*Diagnostic Management*/
+    #define _UDS_INDEX_COMMAND_STARTDIAGNOSTICSESSION 0x10U
+    #define _UDS_INDEX_COMMAND_ECURESET 0x11U
+    #define _UDS_INDEX_COMMAND_SECURITYACCESS 0x27U
+    #define _UDS_INDEX_COMMAND_TESTERPRESENT 0x3EU
+    #define _UDS_INDEX_COMMAND_ACCESSTIMINGPARAMERTERS 0x83U
+
+    /*Data Transmission*/
+    #define _UDS_INDEX_COMMAND_READDATABYIDENTIFIER 0x22U
+    #define _UDS_INDEX_COMMAND_READMEMORYBYADDRESS 0x23U
+    #define _UDS_INDEX_COMMAND_READSCALINGDATABYIDENTIFIER 0x24U
+    #define _UDS_INDEX_COMMAND_READDATABYPERIODICIDENTIFIER 0x2AU
+    #define _UDS_INDEX_COMMAND_DYNAMICALLYDEFINEDATAIDENTIFIER 0x2CU
+    #define _UDS_INDEX_COMMAND_WRITEDATABYIDENTIFIER 0x2EU
+    #define _UDS_INDEX_COMMAND_WRITEMEMORYBYADDRESS 0x3DU
+
+	/*Input Output Control*/
+    #define _UDS_INDEX_COMMAND_INPUTOUTPUTCONTROL 0x2FU
+
+    /*Fault Memory*/
+    #define _UDS_INDEX_COMMAND_READDTCINFORMATION 0x19U
+    #define _UDS_INDEX_COMMAND_CLEARDIAGNOSTICINFORMATION 0x14U
+    #define _UDS_INDEX_COMMAND_CONTROLDTCSETTING 0x85U
+
+    /*Flash Memory Programming*/
+    #define _UDS_INDEX_COMMAND_REQUESTUPLOAD 0x35U
+    #define _UDS_INDEX_COMMAND_REQUESTDOWNLOAD 0x34U
+    #define _UDS_INDEX_COMMAND_TRANSFERDATA 0x36U
+    #define _UDS_INDEX_COMMAND_REQUESTTRANSFEREXIT 0x37U
+
+    /*Remote Activation of Routine*/
+    #define _UDS_INDEX_COMMAND_ROUTINECONTROL 0x31U
+
+	/*Communication*/
+    #define _UDS_INDEX_COMMAND_COMMUNICATIONCONTROL 0x28U
+
+    #define _UDS_INDEX_POSRESP_COMMAND  0x40U
+
+    /*UDS DID信息上层配置*/
+    #define _UDS_DID_MASK_READ			0x01  //Read Enable, 0x22
+    #define _UDS_DID_MASK_WRITE			0x02  //Write Enable, 0x2E
+    #define _UDS_DID_MASK_CONTROL		0x04  //Control Enable, 0x2F
+    #define _UDS_DID_MASK_ENDIANNESS	0x80  //Endianness
+
+
+	/*UDS Session Mode定义*/
+	#define _UDS_INDEX_DIAG_DEFAULT  0x01
+	#define _UDS_INDEX_DIAG_PROGRAMMING  0x02
+	#define _UDS_INDEX_DIAG_EXTENDED  0x03
+
+	typedef uint8 (*pFunc_UDSIOCtrlCallback)(uint16 numRecvLenUW, uint8 * datRecvBuffUBP, uint16 * numSendLenUWP, uint8 * datSendBuffUBP);
+
+
+    typedef struct
+    {
+		uint8    DataTypeUB;        ///该DID的数据类型
+		uint16   idxDataIDUW;       ///DID
+		uint32   addrDataUI;        ///数据地址
+		float32  ConvertFactor;     ///该DID的转换因子 B
+		float32  ConvertOffset;     ///该DID的转换偏移量 C
+		uint16   ConvertnumSizeUW;  ///转换后的字节数
+		uint16   numSizeUW;         ///物理值字节数
+		boolean  idxByteOrderUB;    ///访问时的大小端方式,0Big/1Little
+		uint8    infoMaskReadUW;    ///0x22 readID权限
+		uint8    infoMaskWriteUW;   ///0x2E writeID权限
+		uint8    infoMaskIOCtrlUW;  ///0x2F IOCtrl权限
+		pFunc_UDSIOCtrlCallback pIOCtrlCallback;
+    } UDSInterface_infoDIDS_TYPE; /*环境信息*/
+
+    typedef struct
+    {
+        uint16 numDIDUW;
+        const UDSInterface_infoDIDS_TYPE * addrEnvDataSP;
+    } UDSInterface_infoDIDConfS_TYPE;
+
+    /*UDS Routine信息上层配置*/
+    typedef uint8 (*pFunc_UDSRoutineCallback)(uint16 numRecvLenUW, uint8 * datRecvBuffUBP, uint16 * numSendLenUWP, uint8 * datSendBuffUBP);
+
+    typedef struct
+    {
+        uint16 idxRoutineIDUW;
+        uint16 infoMaskUW; //与DID的Mask定义一直,使用其Control部分
+        pFunc_UDSRoutineCallback pRoutineCallback;
+    } UDSInterface_infoRoutineS_TYPE; /*例程信息*/
+
+    typedef struct
+    {
+        uint8 numRoutineUB;
+        const UDSInterface_infoRoutineS_TYPE * addrRoutineSP;
+    } UDSInterface_infoRoutineConfS_TYPE;
+
+    typedef struct
+    {
+    	uint8 numParamIDUB;
+    	const uint16 * addrSnapshotDIDSP;
+    } UDSInterface_infoSnapshotConfS_TYPE;
+
+
+
+    uint8 UDSInterface_CheckServiceCondition(uint8 idxSIDUB, uint8 stSubFuncUB);
+	void UDSInterface_GetSeed(uint8 idxSecLvlUB, uint8 * dataSeedUBP);
+	void UDSInterface_GetKey(uint8 idxSecLvlUB, uint8 * dataSeedUBP, uint8 * dataKeyUBP);
+	uint8 UDSInterface_RoutineTestCallback(uint16 numRecvLenUW, uint8 * datRecvBuffUBP, uint16 * numSendLenUWP, uint8 * datSendBuffUBP);
+	uint8 UDSInterface_IOControlCallback(uint16 numRecvLenUW, uint8 * datRecvBuffUBP, uint16 * numSendLenUWP, uint8 * datSendBuffUBP);
+
+    extern const UDSInterface_infoDIDConfS_TYPE UDSInterface_infoDIDConfS;
+    extern const UDSInterface_infoRoutineConfS_TYPE UDSInterface_infoRoutineConfS;
+    extern const UDSInterface_infoSnapshotConfS_TYPE UDSInterface_infoSnapshotConfS;
+
+#endif

+ 282 - 0
System/Vehicle/UDS/UDSInterface_Cfg.h

@@ -0,0 +1,282 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2018 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:匹配标定与故障诊断接口
+* 文件名: UDSInterface_Cfg.h
+* 功能描述 : UDS配置文件
+* 引用记录:
+* 备注:
+
+* 修订记录:
+*       日期            版本          作者        描述
+*   2018.12.07     00.01.02  刘略               第一版
+*******************************************************************************/
+
+
+
+
+
+
+#ifndef __UDSINTERFACE_CFG_H
+	#define __UDSINTERFACE_CFG_H
+
+
+	#define _UDSINTERFACE_NUM_DID 100  //DID数量
+
+	#define _UDSINTERFACE_NUM_ROUTINE 10 //Routine Control数量
+
+	#define _UDSINTERFACE_NUM_SNAPSHOT 0  //Snapshot绑定DID数量
+
+
+    #define _UDS_INDEX_DID_UINT8_N               0      ///数据类型为数组
+    #define _UDS_INDEX_DID_UINT8                 1
+    #define _UDS_INDEX_DID_INT8                  2
+    #define _UDS_INDEX_DID_UINT16                3
+    #define _UDS_INDEX_DID_INT16                 4
+    #define _UDS_INDEX_DID_UINT32                5
+    #define _UDS_INDEX_DID_INT32                 6
+    #define _UDS_INDEX_DID_UINT64                7
+    #define _UDS_INDEX_DID_INT64                 8
+    #define _UDS_INDEX_DID_FLOAT32               9
+    #define _UDS_INDEX_DID_FLOAT64               10
+    /*DID数据的存储方式*/
+    #define _UDS_INDEX_DID_LSB                   1      ///小端存储
+    #define _UDS_INDEX_DID_MSB                   0      ///大端存储
+
+	/*部分DID的数据长度*/
+	#define _EOL_LEN_K2REI_VMVIN 34     //Vehicle Manufacturer Vehicle Identification Number
+    #define _EOL_LEN_K2REI_VMECUSWVER 64   //Vehicle Manufacturer ECU Software  Version
+    #define _EOL_LEN_K2REI_VMECUHWNR 16   //Vehicle Manufacturer ECU Hardware Number
+    #define _EOL_LEN_K2REI_VMTESTERSN 16 //Vehicle Manufacturer Repair Shop Code or Tester Serial Number
+    #define _EOL_LEN_K2REI_VMPMDATE 10  //Vehicle Manufacturer Program Data
+    #define _EOL_LEN_K2REI_VMEGTSTDATE 10  //Vehicle Manufacturer Engine Test Date
+    #define _EOL_LEN_K2REI_VMDSID 66  //Vehicle Manufacturer Dataset Identification
+
+	/*DID定义*/
+    #define _UDS_INDEX_DID_VEHNANUFECUSWNO        0xF188U
+    #define _UDS_INDEX_DID_VEHMANUFECUSWVERNO     0xF189U
+    #define _UDS_INDEX_DID_VIN                    0xF190U
+    #define _UDS_INDEX_DID_VEHMANUFECUHWNO        0xF191U
+    #define _UDS_INDEX_DID_SYSNAMEORENGTYPE       0xF197U
+    #define _UDS_INDEX_DID_REPAIRSHOPCODE         0xF198U
+    #define _UDS_INDEX_DID_PROGAMMINGDATE         0xF199U
+    #define _UDS_INDEX_DID_CALIBRATIONEQSWNO      0xF19CU
+    #define _UDS_INDEX_DID_ECUINSTALLDATE         0xF19DU
+
+
+	/*Data Identifier*/
+    #define _UDS_INDEX_DID_RESETINFO              0xF120U
+    #define _UDS_INDEX_DID_EOLTESTSWT             0xF121U//
+    #define _UDS_INDEX_DID_CALDATANAME            0xF150U//
+    #define _UDS_INDEX_DID_CALDATAPARTNO          0xF151U//
+	#define _UDS_INDEX_DID_CALECUPARTNO           0xF152U
+    #define _UDS_INDEX_DID_CALSWVERNO             0xF153U//
+    #define _UDS_INDEX_DID_CALVEHMODEL            0xF154U//
+    #define _UDS_INDEX_DID_USERCUSTCODE0          0xF155U//
+    #define _UDS_INDEX_DID_USERCUSTCODE1          0xF156U
+    #define _UDS_INDEX_DID_USERCUSTCODE2          0xF157U
+    #define _UDS_INDEX_DID_USERCUSTCODE3          0xF158U
+    #define _UDS_INDEX_DID_USERCUSTCODE4          0xF159U
+    #define _UDS_INDEX_DID_USERCUSTCODE5          0xF15AU
+    #define _UDS_INDEX_DID_BOOTSWIDENT            0xF180U
+    #define _UDS_INDEX_DID_APPSWIDENT             0xF181U
+    #define _UDS_INDEX_DID_APPDATAIDENT           0xF182U
+    #define _UDS_INDEX_DID_BOOTSWFINGERPRINT      0xF183U
+    #define _UDS_INDEX_DID_APPSWFINGERPRINT       0xF184U
+    #define _UDS_INDEX_DID_APPDATAFINGERPRINT     0xF185U
+    #define _UDS_INDEX_DID_VEHMANUFSPAREPARTNO    0xF187U
+    #define _UDS_INDEX_DID_VEHNANUFECUSWNO        0xF188U
+    #define _UDS_INDEX_DID_VEHMANUFECUSWVERNO     0xF189U
+    #define _UDS_INDEX_DID_SYSSUPPLIERIDENT       0xF18AU
+    #define _UDS_INDEX_DID_ECUMANUFDATE           0xF18BU
+    #define _UDS_INDEX_DID_ECUSERIALNO            0xF18CU//
+    #define _UDS_INDEX_DID_SUPPORTFUNCUNIT        0xF18DU
+   	#define _UDS_INDEX_DID_VIN                    0xF190U
+    #define _UDS_INDEX_DID_VEHMANUFECUHWNO        0xF191U
+    #define _UDS_INDEX_DID_SYSSUPPLIERECUHWNO     0xF192U
+    #define _UDS_INDEX_DID_SYSSUPPLIERECUHWVERNO  0xF193U
+    #define _UDS_INDEX_DID_SYSSUPPLIERECUSWNO     0xF194U
+    #define _UDS_INDEX_DID_SYSSUPPLIERECUSWVERNO  0xF195U
+    #define _UDS_INDEX_DID_EXHREGORTYPEAPPRNO     0xF196U
+    #define _UDS_INDEX_DID_SYSNAMEORENGTYPE       0xF197U
+    #define _UDS_INDEX_DID_REPAIRSHOPCODE         0xF198U
+    #define _UDS_INDEX_DID_PROGAMMINGDATE         0xF199U
+    #define _UDS_INDEX_DID_CALREPAIRSHOPCODE      0xF19AU
+    #define _UDS_INDEX_DID_CALIBRATIONDATE        0xF19BU
+    #define _UDS_INDEX_DID_CALIBRATIONEQSWNO      0xF19CU
+    #define _UDS_INDEX_DID_ECUINSTALLDATE         0xF19DU
+    #define _UDS_INDEX_DID_ODXFILEIDENT           0xF19EU
+    #define _UDS_INDEX_DID_ENTITYIDENT            0xF19FU
+	/*下面是上柴新加的DID*/
+	#define UDS_INDEX_DID_DATASET_VER_PRO_VEHICLE_SUPPLIER_DIS				0XF012U
+	#define UDS_INDEX_DID_HISTORICAL_INTERROGATION_RECORD 					0XF101U
+	#define UDS_INDEX_DID_SUPPLIER_ECU_SOFT_VER_NUM							0XF105U
+	#define UDS_INDEX_DID_SUPPLIER_ECU_DATASET_VER_NUM						0XF011U
+	#define UDS_INDEX_DID_ECUAPPLICATIONSOFTWAREVERSIONNUMBER				0XF1A0U
+	#define UDS_INDEX_DID_ECUCALIBRATIONSOFTWARENUMBER						0XF1A1U
+	#define UDS_INDEX_DID_ECUNETREFERENCENUMBER								0XF1A2U
+	#define UDS_INDEX_DID_CBALIRATIONDATAIDENTIFIER							0XF1A3U
+	#define UDS_INDEX_DID_CURRENT_RERILL_LOAD_LEVEL_FROM_SCRMON  			0X301U
+	#define UDS_INDEX_DID_DOSING_STRATEGY_CURRENT_NH3_LOAD_LEVE_CATALYST	0X302U
+	#define UDS_INDEX_DID_DOSING_STRATEGY_HC_POISONING_EASY_RELEASED		0X303U
+	#define UDS_INDEX_DID_DOSING_STRATEGY_HC_POISONING_DIFFICULTLY			0X304U
+	#define UDS_INDEX_DID_DOSING_STRATEGY_AGE_SCR_CATALYST					0X306U
+	#define UDS_INDEX_DID_DOSING_STRATEGY_AGE_OXI_HC						0X307U
+	#define UDS_INDEX_DID_DOSING_STRATEGY_AGE_OXI_NO2						0X308U
+	#define UDS_INDEX_DID_DOSING_STRATEGY_AGEOXI_HC_NO2						0X309U
+	#define UDS_INDEX_DID_DOSING_STRATEGY_CURRENT_STATE_LONG_TERM_ADAP		0X310U
+	#define UDS_INDEX_DID_UDC_MRdCAGDOSQNT 						 			0X319U
+	#define UDS_INDEX_DID_DOSED_QUANTITY_SCR_POD							0X327U//写
+	#define UDS_INDEX_DID_SCRCTL_CTRCNT 							 		0X334U
+	#define UDS_INDEX_DID_INDEX_FOR_ENGINE_TEST_SCR							0X336U
+	#define UDS_INDEX_DID_INDUCEMENT_OVERRIDE_COUNTER_VALUE					0X33EU
+	#define UDS_INDEX_DID_SYSDIAG_TIINDCOVRDDURNCNTR_MP						0X3B4U
+	#define UDS_INDEX_DID_UDOSVLV_O_P_ATS									0X0401U
+	#define UDS_INDEX_DID_UHTRPL_O_D_ATS									0X0402U
+	#define UDS_INDEX_DID_UHTRTNK_O_D_ATS									0X0403U
+	#define UDS_INDEX_DID_UPMPMOT_O_P_ATS									0X0404U
+	#define UDS_INDEX_DID_URREVLV_O_D_ATS									0X0405U
+	#define UDS_INDEX_DID_UHTRBL_O_D_ATS									0X0406U
+	#define UDS_INDEX_DID_UHTRSM_O_D_ATS									0X0407U
+	#define UDS_INDEX_DID_UHTRSL_O_D_ATS									0X0408U
+	#define UDS_INDEX_DID_UHTRRly_O_D_ATS									0X0409U
+	#define UDS_INDEX_DID_Routine_SysDosQun_Measurement						0x0501U
+	#define UDS_INDEX_DID_Routine_DosQun_Measurement						0x0502U
+	#define UDS_INDEX_DID_Routine_DosQunInt									0x0503U
+	#define UDS_INDEX_DID_Routine_System_Emptying							0x0504U
+	#define UDS_INDEX_DID_Routine_SCRComplete								0x0505U
+	#define UDS_INDEX_DID_Routine_System_Pre_Spray_Test						0x0507U
+	#define UDS_INDEX_DID_Routine_Pressure_BuildUP_Spray_Test				0x0508U
+	#define UDS_INDEX_DID_Routine_Spray_Phase								0x0509U
+	#define UDS_INDEX_DID_READ_VARIANT_DA_MANGER_STR_FROM_EEPROM			0X1001U
+	#define UDS_INDEX_DID_RAW_VALUE_INPUTS_DIRECTLY_AFTER_ADC				0X1600U
+	#define UDS_INDEX_DID_PHYSICAL_VALUES_OF_THE_INPUTS						0X1601U
+	#define UDS_INDEX_DID_BATTEY_VALTAGE									0X1602U
+	#define UDS_INDEX_DID_MAIN_STATE_MACHINE								0X1603U
+	#define UDS_INDEX_DID_COSCR_STATE_MACHINE								0X1604U
+	#define UDS_INDEX_DID_ENGINE_TEST_DOSING_QUANTITY_MEASUREMENT			0X1605U
+	#define UDS_INDEX_DID_SECTION_ENGINE_TEST_SYSTEM_EMPTYING				0X1610U
+	#define UDS_INDEX_DID_ACTUAL_ENGINE_PERCENT_TORQUE_PTHLEAD_TRQINRCURR	0x1612U
+	#define UDS_INDEX_DID_COOLANT_TEMPERATURE_CENGDST_T						0X1613U
+	#define UDS_INDEX_DID_FUEL_TEMPERATURE_FUELT_T							0X1614U
+	#define UDS_INDEX_DID_OIL_TEMPERATURE_OIL_TSWMP							0X1615U
+	#define UDS_INDEX_DID_RESERVED											0X1616U
+	#define UDS_INDEX_DID_NOX_SENSOR_HEATER_RELEASED_US_DS_SCRCTL_STHTRRLS	0X1617U
+	#define UDS_INDEX_DID_NOX_SENSOR_US_SCR_NOMCATDS						0X1618U
+	#define UDS_INDEX_DID_NOX_SENSOR_DS_SCR_NOCAT2DS						0X1619U
+	#define UDS_INDEX_DID_ANALOG_OUTPUTS_UDOSVLV_RPS_UPMPMOT_RPS			0X1620U
+	#define UDS_INDEX_DID_TOTAL_VEHICLE_DISTANCE_GLBDA_LTOTDST				0X1623U
+	#define UDS_INDEX_DID_NOX_RAW_EMISSIONS_UPSTREAM_SCR_CAL_MOD			0X1624U
+	#define UDS_INDEX_DID_LAMBDA_VALUE_UPSTREAM_SCR_TRBNDSRLAM_RLAM			0X1625U
+	#define UDS_INDEX_DID_ENGINE_TEST_SCR_COMPLETE							0X1626U
+	#define UDS_INDEX_DID_ACTIVE_DIAGNOSTIC_INFORMATION						0xF100U
+	#define UDS_INDEX_DID_HARDWARE_PART_NUMBER_BUSINESS_UNIT_SPECIFIC		0XF111U
+	#define UDS_INDEX_DID_SOFTWARE_PART_NUMBER_BUSINESS_UNIT_SPECIFIC		0XF121U
+	#define UDS_INDEX_DID_HARD_VERSION_INFORMATION							0XF150U
+	#define UDS_INDEX_DID_SOFTWARE_VERSION_INFORMATION						0XF151U
+	#define UDS_INDEX_DID_BOOT_SOFTWARE_VERSION_INFORMATION					0XF153U
+	#define UDS_INDEX_DID_HARDWARE_SUPPLIER_IDENTIFICATION					0XF154U
+	#define UDS_INDEX_DID_SOFTWARE_SUPPLIER_IDENTIFICATION					0XF155U
+	#define UDS_INDEX_DID_WRITE_FINGERPRINT_DATAIDENTIFIER_EOL				0XF15AU
+	#define UDS_INDEX_DID_WRITE_FINGERPRINT_DATAIDENTIFIER_AFTERSALE		0XF15BU
+	#define UDS_INDEX_DID_DCU_CODE_IDENTIFICATION_SERIAL_NUMBER				0XF18CU
+	#define UDS_INDEX_DID_ECU_BOOTLOADER_SOFTWARE_NUMBER					0XF183U
+	#define UDS_INDEX_DID_ECU_PART_NUMBER									0XF187U
+	#define UDS_INDEX_DID_SYSTERM_SUPPLIERID								0XF18AU
+	#define UDS_INDEX_DID_ECU_MANUFACTUREDATE								0XF18BU
+	#define UDS_INDEX_DID_SUPPLIER_ECU_SERIAL_NUMBER						0XF18CU
+	#define UDS_INDEX_DID_VEHICL_ASSEMBLY_NUMBER							0XF18EU
+	#define UDS_INDEX_DID_ECUHARDWARE_VERSIONNNmber							0xF191U
+	#define UDS_INDEX_DID_VIN												0xF190U
+	#define UDS_INDEX_DID_SUPPER_ECU_HARDWARE_NUMBER						0XF192U
+	#define UDS_INDEX_DID_SUPPER_ECU_HARDWARE_VERSION_NUMBER				0XF193U
+	#define UDS_INDEX_DID_ENGINE_TYPE_PROGRAMMED_BY_ENGINE_SUPPLIER			0XF197U
+	#define UDS_INDEX_DID_DOSING_VALVE_RB_PART_NUMBER						0XF1F0U
+	#define UDS_INDEX_DID_DOSING_VALVE_IDENTIFICATION_CODE					0XF1F1U
+	#define UDS_INDEX_DID_SUPPLY_MODULE_RB_PART_NUMBER						0XF1F2U
+	#define UDS_INDEX_DID_SUPPLY_MODULE_IDENTIFICATION_CODE					0XF1F3U
+	#define UDS_INDEX_DID_UDV_CHECK											0XF1F4U
+	#define UDS_INDEX_DID_FIRST_PROGRAMMED_SW_CONTAINER_NUMBER				0XF1F5U
+	#define UDS_INDEX_DID_MANUFACTURING_date_ONE							0XF1F6U
+	#define UDS_INDEX_DID_MANUFACTURING_date_TWO							0XF1F7U
+	#define UDS_INDEX_DID_EEPROM_LAYOUT_VERSION								0XF1F8U
+	#define UDS_INDEX_DID_READ_TPROT_INFORMATION							0XFD00U
+
+	/*27145相关*/
+	#define UDS_INDEX_STATUS_VEHICLE_ENGINE 								0xF41CU
+	#define UDS_INDEX_FLOW_RATE_SENSOR 										0xf410U
+	#define UDS_INDEX_PRESSURE_INTAKE                                       0xf40bU
+	#define UDS_INDEX_NOX_CONTROL_SYSTEM                                    0xf485U
+	#define UDS_INDEX_BANK_DPF                                              0xf47aU
+	#define UDS_INDEX_FUEL_RAIL_PRESSURE									0xf423U
+	#define UDS_INDEX_ITID_PROTOCOL_IDENTIFICATION							0XF810U
+	#define UDS_INDEX_ITID_VIN												0XF802U
+	#define UDS_INDEX_ITID_SUPPORTITID										0XF800U
+	#define UDS_INDEX_ITID_SUPPORTITID_TWO									0XF820U
+	#define UDS_INDEX_ITID_SUPPORTITID_FOUR									0XF840U
+	#define UDS_INDEX_ITID_SUPPORTITID_SIX									0XF860U
+	#define UDS_INDEX_ITID_SUPPORTITID_EIGHT								0XF880U
+	#define UDS_INDEX_ITID_SUPPORTITID_A									0XF8A0U
+	#define UDS_INDEX_ITID_SUPPORTITID_C									0XF8C0U
+	#define UDS_INDEX_ITID_SUPPORTITID_E									0XF8E0U
+	#define UDS_INDEX_DID_SUPPORTDID										0XF400U
+	#define UDS_INDEX_DID_SUPPORTDID_two									0XF420U
+	#define UDS_INDEX_DID_SUPPORTDID_FOUR									0XF440U
+	#define UDS_INDEX_DID_SUPPORTDID_SIX									0XF460U
+	#define UDS_INDEX_DID_SUPPORTDID_EIGHT									0XF480U
+	#define UDS_INDEX_DID_SUPPORTDID_A										0XF4A0U
+	#define UDS_INDEX_DID_SUPPORTDID_C									    0XF4C0U
+	#define UDS_INDEX_DID_SUPPORTDID_E									    0XF4E0U
+	#define UDS_INDEX_DID_ENGINE_RPM										0XF40CU
+	#define UDS_INDEX_DID_VEHICLE_SPEED										0XF40DU
+	#define UDS_INDEX_DID_ENGINE_COOLANT_TEM								0XF405U
+	#define UDS_INDEX_DID_ATMOSPHERIC_PRESSURE_VALUE						0XF433U
+	#define UDS_INDEX_DID_CONTROL_MODULE_VOLTAGE							0XF442U
+	#define UDS_INDEX_DID_AMBIENT_AIR_TEMPERATURE							0XF446U
+	#define UDS_INDEX_DID_ENGINE_OIL_TEMPERATURE							0XF45CU
+	#define UDS_INDEX_DID_INTAKE_AIR_FLOW_CONTROL							0XF46AU
+	#define UDS_INDEX_DID_MASS_AIR_FLOW_SENSOR								0XF466U
+	#define UDS_INDEX_DID_ENGINE_COOLANT_TEMPERATURE						0XF467U
+	#define UDS_INDEX_DID_INTAKE_AIR_TEMPERATURE_SENSOR						0XF468U
+	#define UDS_INDEX_DID_NOX_SENSOR										0XF483U
+	#define UDS_INDEX_DID_O2_SENSOR											0XF48CU
+	#define UDS_INDEX_MID_SUPPORTMID										0XF600U
+	#define UDS_INDEX_MID_SUPPORTMID_TWO									0XF620U
+	#define UDS_INDEX_MID_SUPPORTMID_FOUR									0XF640U
+	#define UDS_INDEX_MID_SUPPORTMID_SIX									0XF660U
+	#define UDS_INDEX_MID_SUPPORTMID_EIGHT									0XF680U
+	#define UDS_INDEX_MID_SUPPORTMID_A										0XF6A0U
+	#define UDS_INDEX_MID_SUPPORTMID_C									 	0XF6C0U
+	#define UDS_INDEX_MID_SUPPORTMID_E										0XF6E0U
+
+    /*27145RID定义*/
+	#define UDS_INDEX_RID_SUPPORT											0XE000U
+	#define UDS_INDEX_RID_SUPPORT_TWO										0XE020U
+	#define UDS_INDEX_RID_SUPPORT_FOUR										0XE040U
+	#define UDS_INDEX_RID_SUPPORT_SIX										0XE060U
+	#define UDS_INDEX_RID_SUPPORT_EIGHT										0XE080U
+	#define UDS_INDEX_RID_SUPPORT_A											0XE0A0U
+	#define UDS_INDEX_RID_SUPPORT_E											0XE0E0U
+	#define UDS_INDEX_RID_SUPPORT_C											0XE0C0U
+	#define UDS_INDEX_RID_EVAPORATIVE_SYS_LEAK_TEST							0XE001U
+//luoshun
+	#define UDS_INDEX_DID_SUPPORT_F463										0XF463U
+	#define UDS_INDEX_DID_SUPPORT_F404										0XF404U
+
+
+	#define UDS_INDEX_DID_SUPPORT_F49E										0XF49EU
+	#define UDS_INDEX_DID_SUPPORT_F449										0XF449U
+	#define UDS_INDEX_DID_SUPPORT_F44A										0XF44AU
+//关于冻结帧的DID
+	#define UDS_INDEX_DID_SUPPORT_F461										0XF461U
+	#define UDS_INDEX_DID_SUPPORT_F462										0XF462U
+
+
+extern uint8 UDS_SysO_bAcvDewptNoxSnsrCA ;
+
+extern uint8 ITID_PROTOCOL_IDENTIFICATIONUB;
+
+extern uint8 dataSysOUB;
+#endif

+ 104 - 0
System/Vehicle/UDS/UDSInterface_PBCfg.c

@@ -0,0 +1,104 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2015 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车管理
+* 文件名: UDSInterface_PBCfg.c
+* 功能描述 : UDS配置
+* 引用记录:
+* 备注:
+* 修订记录:
+*       日期            版本          作者        描述
+*   2019.03.25          00.01.00      刘略     第一版
+*******************************************************************************/
+
+#include "UDSInterface.h"
+#include "UDSInterface_Cfg.h"
+#include "HardwareLib.h"
+#include "EOLData.h"
+#include "CANNet.h"
+#include "VehCo.h"
+
+uint16 SCRPOD_mCdmDosQntStrt_NC;
+
+/*DID配置*/
+const UDSInterface_infoDIDS_TYPE UDSInterface_infoDIDSA[_UDSINTERFACE_NUM_DID]=
+{
+	{
+		_UDS_INDEX_DID_UINT8_N,
+		_UDS_INDEX_DID_VEHNANUFECUSWNO, //应用层软件版本号 F188
+		(uint32)&AppLayer_idxVerUBA,
+		1,
+		0,
+		64,
+		64,
+		0,
+		0b1111,
+		0b00000,
+		0b0000, //只能读,不可写
+		NULL_PTR
+	},
+};
+
+
+
+
+const UDSInterface_infoDIDConfS_TYPE UDSInterface_infoDIDConfS=
+{
+    _UDSINTERFACE_NUM_DID,
+	#if _UDSINTERFACE_NUM_DID>0
+    	&(UDSInterface_infoDIDSA[0]),
+	#else
+		NULL_PTR
+	#endif
+};
+
+/*Routine Control配置*/
+#if _UDSINTERFACE_NUM_ROUTINE>0
+const UDSInterface_infoRoutineS_TYPE UDSInterface_infoRoutineSA[_UDSINTERFACE_NUM_ROUTINE]=
+{
+	{
+		UDS_INDEX_DID_Routine_SysDosQun_Measurement,//501
+		0b1000001110000000,//写
+		//UDS_RoutineSysDosQunMeasurement,
+	},
+
+
+};
+#endif
+
+const UDSInterface_infoRoutineConfS_TYPE UDSInterface_infoRoutineConfS=
+{
+	_UDSINTERFACE_NUM_ROUTINE,
+	#if _UDSINTERFACE_NUM_ROUTINE>0
+		&(UDSInterface_infoRoutineSA[0]),
+	#else
+		NULL_PTR
+	#endif
+};
+
+/*快照Snapshot配置,对应DID列表的序号,总字节数受_DSM_NUM_CONF_SNAPSHOT_BYTES_MAX限制*/
+#if _UDSINTERFACE_NUM_SNAPSHOT>0
+const uint16 UDSInterface_idxSnapshotDIDUWA[_UDSINTERFACE_NUM_SNAPSHOT]=
+{
+	0,
+	1,
+	2,
+	3,
+	4,
+	5,
+	6
+};
+#endif
+
+
+const UDSInterface_infoSnapshotConfS_TYPE UDSInterface_infoSnapshotConfS=
+{
+    _UDSINTERFACE_NUM_SNAPSHOT,
+    #if _UDSINTERFACE_NUM_SNAPSHOT>0
+        &(UDSInterface_idxSnapshotDIDUWA[0]),
+    #else
+        NULL_PTR
+    #endif
+};

+ 114 - 0
System/Vehicle/UDS/UDSRoutineControl.c

@@ -0,0 +1,114 @@
+/*
+ * UDSRoutineControl.c
+ *
+ *  Created on: 2020年4月29日
+ *      Author: LXG
+ */
+
+#include "UDSInterface.h"
+
+
+//501
+uint8 UDS_RoutineSysDosQunInterface501( uint8 *UDSRecvUBP,uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP)
+{
+	uint8 numNRC=0;
+	/*
+	 * 代码实现
+	 * UDSRecvUBP: 接收UDS数据数组指针(在RID为501中只为1字节数组,取值范围:为0/1)。
+	 * UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+	 * TxUDSDataUIP:  数据发送数组指针。
+	 * TxUDSDataLengthUBP: 数据长度指针。
+	 * numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+	 */
+	return numNRC;
+}
+//502
+uint8 UDS_RoutineDosQunInterface502( uint8 *UDSRecvUBP,uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP)
+{
+	uint8 numNRC=0;
+	/*
+	 * 代码实现
+	 * UDSRecvUBP: 接收UDS数据数组指针。
+	 * UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+	 * TxUDSDataUIP:  数据发送数组指针。
+	 * TxUDSDataLengthUBP: 数据长度指针。
+	 * numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+	 */
+	return numNRC;
+}
+//503
+uint8 UDS_RoutineDosQunIntInterface503(uint8 UDSRoutine)
+{
+	uint8 numNRC=0;
+	/*
+	 * UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+	 * numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+	 */
+
+	return numNRC;
+}
+//504
+uint8 UDS_RoutineSystemEmptyingInterface504(uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP)
+{
+	uint8 numNRC=0;
+	/*
+	 * UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+	 * TxUDSDataUIP:  数据发送数组指针。
+	 * TxUDSDataLengthUBP: 数据长度指针。
+	 * numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+	 */
+	return numNRC;
+}
+
+//505
+uint8 UDS_RoutineSCRCompleteTest505( uint8 *UDSRecvUBP,uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP)
+{
+	uint8 numNRC=0;
+	/*
+	 * 代码实现
+	 * UDSRecvUBP: 接收UDS数据数组指针。
+	 * UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+	 * TxUDSDataUIP:  数据发送数组指针。
+	 * TxUDSDataLengthUBP: 数据长度指针。
+	 * numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+	 */
+	return numNRC;
+}
+//507
+uint8 UDS_RoutineSysPreSprayTestInterface507(uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP)
+{
+	uint8 numNRC=0;
+	/*
+	 * UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+	 * TxUDSDataUIP:  数据发送数组指针。
+	 * TxUDSDataLengthUBP: 数据长度指针。
+	 * numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+	 */
+	return numNRC;
+}
+//508
+uint8 UDS_RoutinePressureBulidUpSprayInterface508(uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP)
+{
+	uint8 numNRC=0;
+	/*
+	 * UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+	 * TxUDSDataUIP:  数据发送数组指针。
+	 * TxUDSDataLengthUBP: 数据长度指针。
+	 * numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+	 */
+	return numNRC;
+}
+//509
+uint8 UDS_RoutineSprayPhaseInterface509(uint8 *UDSRecvUBP,uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP)
+{
+	uint8 numNRC=0;
+	/*
+	 * 代码实现
+	 * UDSRecvUBP: 接收UDS数据数组指针。
+	 * UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+	 * TxUDSDataUIP:  数据发送数组指针。
+	 * TxUDSDataLengthUBP: 数据长度指针。
+	 * numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+	 */
+	return numNRC;
+}

+ 47 - 0
System/Vehicle/UDS/UDSRoutineControl.h

@@ -0,0 +1,47 @@
+/*
+ * UDSRoutineControl.c
+ *
+ *  Created on: 2020年4月29日
+ *      Author: LXG
+ */
+
+/****************************************************************************
+*----------------------------------------------------------------------------
+* 描述: RID读取函数 类型定义
+*----------------------------------------------------------------------------
+* 返回值: 0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令;
+*----------------------------------------------------------------------------
+* 输入参数:
+* 		  UDSRoutine:  0x31服务子功能,取值范围:01/02/03
+* 		  TxUDSDataUIP:  数据发送数组指针。
+* 		  TxUDSDataLengthUBP: 数据长度指针。
+* 		  UDSRecvUBP: 接收UDS数组指针。
+* 		  numNRC:0 – success执行成功,发送缓存中正响应命令; others – failed执行失败,发送负响应代码为返回值的负响应命令
+*----------------------------------------------------------------------------
+*所属服务:  0x31 RID读取
+*****************************************************************************/
+	//501
+    uint8 UDS_RoutineSysDosQunInterface501( uint8 *UDSRecvUBP,uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP);
+
+    //502
+    uint8 UDS_RoutineDosQunInterface502( uint8 *UDSRecvUBP,uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP);
+
+    //503
+    uint8 UDS_RoutineDosQunIntInterface503(uint8 UDSmenSwitchUB);
+
+    //504
+    uint8 UDS_RoutineSystemEmptyingInterface504(uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP);
+
+    //505
+    uint8 UDS_RoutineSCRCompleteTest505( uint8 *UDSRecvUBP,uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP);
+
+    //507
+    uint8 UDS_RoutineSysPreSprayTestInterface507(uint8 UDSmenSwitchUB,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP);
+
+    //508
+    uint8 UDS_RoutinePressureBulidUpSprayInterface508(uint8 UDSmenSwitchUB,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP);
+
+    //509
+    uint8 UDS_RoutineSprayPhaseInterface509(uint8 *UDSRecvUBP,uint8 UDSRoutine,uint8 *TxUDSDataUIP,uint16 *TxUDSDataLengthUBP);
+
+

+ 267 - 0
System/Vehicle/VehCo.c

@@ -0,0 +1,267 @@
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (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]="P156V101"; //应用层软件版本信息,可通过UDS接口读取
+
+#define APPLAYERVER_STOP_SEC_VAR
+#include "MemMap.h"
+
+
+/*********************************************************************************************/
+/*示例代码*/
+#ifdef _SAMPLE_CODE_
+
+    uint32 VehCo_fTestUI;
+    uint16 VehCo_rTestUW;
+
+    uint32 VehCo_fInputUIA[2];
+    uint16 VehCo_rInputUWA[2];
+
+    uint16 VehCo_uADChanUWA[_ATD_NUM_CHAN];
+    uint8 VehCo_bDINChanUBA[_DIN_NUM_CHAN];
+
+    float32 VehCo_uBattF;
+
+    uint16 VehCo_uAccPedUW;
+
+    uint32 PressureValue = 0;
+    uint16 Distence1 = 0;
+    uint16 Distence2 = 0;
+    uint8	Switch1 = 0;
+    uint8	Switch2 = 0;
+    uint8	ControlState = 0;
+
+    #define EEPDATA_START_SEC_VAR
+    #include "MemMap.h"
+        uint32 VehCo_ctEEPTestUB=0;
+        uint32 VehCo_ctEEPTestUI=0; //在定义时给EEPROM里的变量赋初值
+        uint32 Control_Times = 0;
+    #define EEPDATA_STOP_SEC_VAR
+    #include "MemMap.h"
+
+#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
+
+
+
+
+
+#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 _BOOTLOADER_EMBEDDED
+        VehCo_pBootloaderUIP = (uint32)Bootloader_Entry;
+    #endif
+
+    /*********************************************************************************************/
+    /*示例代码*/
+    #ifdef _SAMPLE_CODE_
+
+        VehCo_fTestUI = 0;
+        VehCo_rTestUW = 0;
+
+        AccPedCD_Init();
+
+        VehCo_uAccPedUW=0;
+
+    #endif  //_SAMPLE_CODE_
+    /*********************************************************************************************/
+
+	CANNet_Init();
+
+    /*打开强电主继电器*/
+    PSwtDrv_Interface(_PSWT_INDEX_MAINRELAY_CHAN,1);
+}
+
+//整车管理10ms基准运行任务
+void VehCo_Manage10ms(void)
+{
+	/*********************************************************************************************/
+    /*样例代码*/
+    #ifdef _SAMPLE_CODE_
+
+	    VehCo_Ctrl();
+
+    #endif  //_SAMPLE_CODE_
+    /*********************************************************************************************/
+}
+
+//整车管理1ms基准运行任务
+void VehCo_Manage1ms(void)
+{
+    CANNet_Manage1ms();
+}
+
+//停机准备状态操作,10ms运行一次
+uint8 VehCo_Afterrun(void)
+{
+    uint8 stRetUB=0;
+
+    if(HardwareDrv_bBootloaderReqUB == 1)
+    {
+        //进入Bootloader烧写状态准备,将系统置于安全状态
+        //if(xxx==1)
+        {
+            stRetUB=1;
+        }
+    }
+    else
+    {
+        //进入停机关电准备
+
+        /*********************************************************************************************/
+        /*样例代码*/
+        #ifdef _SAMPLE_CODE_
+
+            VehCo_Ctrl();
+
+        #endif  //_SAMPLE_CODE_
+        /*********************************************************************************************/
+
+        //if(xxx==1)
+        {
+            stRetUB=1;
+        }
+    }
+	
+    return stRetUB;
+}
+
+
+/*********************************************************************************************/
+/*样例代码*/
+#ifdef _SAMPLE_CODE_
+
+    void VehCo_Ctrl(void)
+    {
+        uint8 ManuEnable=0;
+
+        //控制算法
+        VehCo_uBattF=(float32)BattCD_uFltUW/100.0F;
+
+        AccPedCD_Update();
+        AccPedCD_Monitor();
+
+        VehCo_fTestUI = 5000;
+        VehCo_rTestUW = (VehCo_rTestUW+10)%_PWM_DUTYCYCLE_FULL;
+        PPWMDrv_Interface(_PPWM_INDEX_FBAK1_CHAN, VehCo_fTestUI, VehCo_rTestUW);
+        //PPWMDrv_Interface(_PPWM_INDEX_FHBAK1_CHAN, VehCo_fTestUI, VehCo_rTestUW);
+
+        PulseAcqDrv_GetChanFreq(_PULSEACQ_INDEX_CP_CHAN, &VehCo_fInputUIA[0], &VehCo_rInputUWA[0]);
+        PulseAcqDrv_GetChanFreq(_PULSEACQ_INDEX_BAK2_CHAN, &VehCo_fInputUIA[1], &VehCo_rInputUWA[1]);
+
+        DODrv_SetChanState(_DO_INDEX_CPCTL_CHAN,(uint8)VehCo_bTestCPCtrlUW_C);
+
+        /*在CAN唤醒的情况下,由上层算法决定CAN唤醒过程结束*/
+        if(BattCD_stWakeupU.B.bCAN == 1)
+        {
+            if(VehCo_bTestCANWuFinUW_C==1)
+            {
+                BattCD_stWakeupU.B.bCAN = 0;
+            }
+        }
+
+        uint16 DistenceBufferV[2]={0,0},DistenceBufferR[2]={0,0},PressureValueBuffer = 0;
+        //开关1采集
+        DINDrv_SetChanThres(_DIN_INDEX_BAK1_CHAN,1,4095U);
+        Switch1=!DINDrv_GetChanState(_DIN_INDEX_BAK1_CHAN);
+        //手动控制采集
+        DINDrv_SetChanThres(_DIN_INDEX_BAK2_CHAN,1,4095U);
+        ManuEnable=!DINDrv_GetChanState(_DIN_INDEX_BAK2_CHAN);
+        //位移量采集
+        DistenceBufferV[0] = ATDDrv_GetChanResult(_ATD_INDEX_BAK3_CHAN);
+        DistenceBufferR[0] = (uint16)((DistenceBufferV[0]/(5.0*4095-DistenceBufferV[0]))*1000.0);
+        Distence1 = (uint16)((2132-DistenceBufferR[0])*(0.1219));
+        //压力采集
+        PressureValueBuffer = ATDDrv_GetChanResult(_ATD_INDEX_ACCPED1_CHAN);
+        PressureValue = (uint16)(PressureValueBuffer*1000/4095.0);
+        //控制输出
+        VehCo_ctEEPTestUI+=10;
+        VehCo_ctEEPTestUB+=10;
+		if(VehCo_ctEEPTestUI>=5*1000)
+		{
+			PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN,1);//输出
+			ControlState = 1;//解锁
+		}
+		else
+		{
+			PSwtDrv_Interface(_PSWT_INDEX_HBAK1_CHAN,0);//不输出
+			ControlState = 2;//锁定
+		}
+		if(VehCo_ctEEPTestUI>=10*1000*2)
+		{
+			Control_Times++;
+			VehCo_ctEEPTestUI = 0;
+		}
+		if(ManuEnable==0)
+		{
+			Control_Times=0;
+			VehCo_ctEEPTestUI = 0;
+		}
+    }
+
+#endif  //_SAMPLE_CODE_
+/*********************************************************************************************/
+
+
+
+

+ 85 - 0
System/Vehicle/VehCo.h

@@ -0,0 +1,85 @@
+/*
+ * @Author       : ChenJie
+ * @Date         : 2021-11-24 14:01:24
+ * @Version      : V3.0
+ * @LastEditors  : ChenJie
+ * @LastEditTime : 2021-11-25 16:01:09
+ * @Description  : file content
+ * @FilePath     : \VehicleControl\VehicleControl\src\System\Vehicle\VehCo.h
+ */
+/********************************************************************************
+* 常州易控汽车电子股份有限公司
+* (c) Copyright 2009-2015 ECTEK
+* 保留所有权利
+********************************************************************************
+* 工程名称:整车管理
+* 文件名: VehCo.h
+* 功能描述 : 整车管理协调头文件
+* 引用记录:
+* 备注: 
+* 修订记录:
+*		日期		      版本		  作者		描述
+*   2011.07.14          00.01.00      李中     第一版                                           
+*******************************************************************************/
+
+#ifndef __VEHCO_H
+#define __VEHCO_H
+
+#include "Std_Types.h"
+
+/********************************************************/
+/*上层与底层的调度接口*/
+//系统初始化
+void VehCo_Init(void);
+
+//基础管理循环
+void VehCo_Manage10ms(void);
+void VehCo_Manage1ms(void);
+
+//Afterrun关电处理,返回0表示处理未完成,返回1表示处理完成
+uint8 VehCo_Afterrun(void);
+/********************************************************/
+
+#define APPLAYERVER_START_SEC_VAR
+#include "MemMap.h"
+
+extern const uint8 AppLayer_idxVerUBA[64]; //应用层软件版本信息,可通过UDS接口读取
+
+#define APPLAYERVER_STOP_SEC_VAR
+#include "MemMap.h"
+
+/*********************************************************************************************/
+/*样例代码*/
+#ifdef _SAMPLE_CODE_
+
+void VehCo_Ctrl(void);
+
+#define EEPDATA_START_SEC_VAR
+#include "MemMap.h"
+
+extern uint32 VehCo_ctEEPTestUI; //在定义时给EEPROM里的变量赋初值
+extern uint32 VehCo_ctEEPTestUI;
+extern uint32 Control_Times;
+#define EEPDATA_STOP_SEC_VAR
+#include "MemMap.h"
+
+#endif //_SAMPLE_CODE_
+/*********************************************************************************************/
+
+/*************************************************************/
+/*标定数据区开始(请不要在该区域加入非标定数据相关的内容)                                                                                 */
+
+#define MAPDATA_START_SEC_VAR_CONST
+#include "MemMap.h"
+
+/*VehCo*/
+extern PRAGMA_MAPDATA const uint16 VehCo_bTestCANWuFinUW_C; /*测试模式下控制CAN唤醒状态结束*/
+extern PRAGMA_MAPDATA const uint16 VehCo_bTestCPCtrlUW_C;   /*CP下拉阻值选择测试操作*/
+
+#define MAPDATA_STOP_SEC_VAR_CONST
+#include "MemMap.h"
+
+/*标定数据区结束                                                                                                                                                                               */
+/*************************************************************/
+
+#endif