VehCo.c 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. /*
  2. * @Author : ChenJie
  3. * @Date : 2021-11-25 15:36:06
  4. * @Version : V3.0
  5. * @LastEditors : ChenJie
  6. * @LastEditTime : 2022-05-10 19:04:08
  7. * @Description : file content
  8. * @FilePath : \VehicleControl\VehicleControl\src\System\Vehicle\VehCo.c
  9. */
  10. /********************************************************************************
  11. * 常州易控汽车电子股份有限公司
  12. * (c) Copyright 2009-2015 ECTEK
  13. * 保留所有权利
  14. ********************************************************************************
  15. * 工程名称:整车管理
  16. * 文件名: VehCo.c
  17. * 功能描述 : 整车管理协调
  18. * 引用记录:
  19. * 备注:
  20. * 修订记录:
  21. * 日期 版本 作者 描述
  22. * 2011.07.14 00.01.00 李中 第一版
  23. *******************************************************************************/
  24. #include "VehCo.h"
  25. #include "HardwareLib.h"
  26. #include "CANNet.h"
  27. #include "AccPedCD.h"
  28. #define APPLAYERVER_START_SEC_VAR
  29. #include "MemMap.h"
  30. const uint8 AppLayer_idxVerUBA[64] = "P156V102"; //应用层软件版本信息,可通过UDS接口读取
  31. #define APPLAYERVER_STOP_SEC_VAR
  32. #include "MemMap.h"
  33. /*********************************************************************************************/
  34. /*示例代码*/
  35. #ifdef _SAMPLE_CODE_
  36. #endif //_SAMPLE_CODE_
  37. /*********************************************************************************************/
  38. /*************************************************************/
  39. /*标定数据区开始(请不要在该区域加入非标定数据相关的内容) */
  40. #define MAPDATA_START_SEC_VAR_CONST
  41. #include "MemMap.h"
  42. /*VehCo*/
  43. PRAGMA_MAPDATA const uint16 VehCo_bTestCANWuFinUW_C = 0; /*测试模式下控制CAN唤醒状态结束*/
  44. PRAGMA_MAPDATA const uint16 VehCo_bTestCPCtrlUW_C = 0; /*CP下拉阻值选择测试操作*/
  45. #define MAPDATA_STOP_SEC_VAR_CONST
  46. #include "MemMap.h"
  47. /*标定数据区结束 */
  48. /*************************************************************/
  49. #define _BOOTLOADER_EMBEDDED
  50. #ifdef _BOOTLOADER_EMBEDDED
  51. uint32 VehCo_pBootloaderUIP;
  52. #pragma section ".bootloader_entry" ax
  53. void Bootloader_Entry(void);
  54. #pragma section
  55. #endif
  56. //整车管理初始化
  57. void VehCo_Init(void)
  58. {
  59. #ifdef _BOOTLOADER_EMBEDDED
  60. VehCo_pBootloaderUIP = (uint32)Bootloader_Entry;
  61. #endif
  62. /*********************************************************************************************/
  63. /*示例代码*/
  64. #ifdef _SAMPLE_CODE_
  65. AccPedCD_Init();
  66. // VehCo_uAccPedUW = 0;
  67. #endif //_SAMPLE_CODE_
  68. /*********************************************************************************************/
  69. CANNet_Init();
  70. /*打开强电主继电器*/
  71. PSwtDrv_Interface(_PSWT_INDEX_MAINRELAY_CHAN, 1);
  72. //打开蓝牙电源
  73. PSwtDrv_Interface(_PSWT_INDEX_BLEPWRCONTROL, 1);
  74. }
  75. //整车管理10ms基准运行任务
  76. void VehCo_Manage10ms(void)
  77. {
  78. /*********************************************************************************************/
  79. /*样例代码*/
  80. #ifdef _SAMPLE_CODE_
  81. static UINT16 TimerMs = 0;
  82. TimerMs = TimerMs + 10;
  83. VehCo_Ctrl();
  84. VcuRxDiagnose();
  85. BcuRxDiagnose();
  86. if (TimerMs % 100 == 0)
  87. {
  88. //FaultDiagnosisFunc();//此处有重启问题,待排查
  89. }
  90. #endif //_SAMPLE_CODE_
  91. /*********************************************************************************************/
  92. }
  93. //整车管理1ms基准运行任务
  94. void VehCo_Manage1ms(void)
  95. {
  96. CAN0Net_Manage1ms();
  97. CAN1Net_Manage1ms();
  98. CAN2Net_Manage1ms();
  99. }
  100. //停机准备状态操作,10ms运行一次
  101. uint8 VehCo_Afterrun(void)
  102. {
  103. uint8 stRetUB = 0;
  104. if (HardwareDrv_bBootloaderReqUB == 1)
  105. {
  106. //进入Bootloader烧写状态准备,将系统置于安全状态
  107. {
  108. stRetUB = 1;
  109. }
  110. }
  111. else
  112. {
  113. //进入停机关电准备
  114. /*样例代码*/
  115. #ifdef _SAMPLE_CODE_
  116. VehCo_Ctrl();
  117. #endif //_SAMPLE_CODE_
  118. {
  119. stRetUB = 1;
  120. }
  121. }
  122. return stRetUB;
  123. }
  124. /*********************************************************************************************/
  125. /*样例代码*/
  126. #ifdef _SAMPLE_CODE_
  127. void VehCo_Ctrl(void)
  128. {
  129. /*在CAN唤醒的情况下,由上层算法决定CAN唤醒过程结束*/
  130. if (BattCD_stWakeupU.B.bCAN == 1)
  131. {
  132. if (VehCo_bTestCANWuFinUW_C == 1)
  133. {
  134. BattCD_stWakeupU.B.bCAN = 0;
  135. }
  136. }
  137. /*正式程序开始*/
  138. GetHVLockState();
  139. GetDIOState();
  140. GetAIOValue();
  141. LockAndUnlockCtrl();
  142. }
  143. #endif //_SAMPLE_CODE_
  144. /*********************************************************************************************/