diff --git a/APP/application/Src/start.c b/APP/application/Src/start.c
index ec22c9b..0815962 100644
--- a/APP/application/Src/start.c
+++ b/APP/application/Src/start.c
@@ -5,6 +5,7 @@
 #include "task.h"
 #include "pDebug.h"
 #include "parameter.h"
+#include "FM_TIM.h"
 
 void startInfo(void)
 {
diff --git a/APP/businessLogic/Inc/inFlash.h b/APP/businessLogic/Inc/inFlash.h
index 87eacd0..eef9e5f 100644
--- a/APP/businessLogic/Inc/inFlash.h
+++ b/APP/businessLogic/Inc/inFlash.h
@@ -112,7 +112,10 @@ void saveTime(timeInfo *time);
 void readTime(timeInfo *time);
 
 
+
+
 #define eventsOrderRecordStartAddr 200
+void eventsOrderRecordStartInit(void);
 void setEventsOrderRecord(eventsOrderRecordMode mode);
 void printfEventsOrderRecord(void);
 
diff --git a/APP/businessLogic/Src/abnormalManage.c b/APP/businessLogic/Src/abnormalManage.c
index 57e3bb5..d8f2b46 100644
--- a/APP/businessLogic/Src/abnormalManage.c
+++ b/APP/businessLogic/Src/abnormalManage.c
@@ -8,7 +8,7 @@
 #include "configParameter.h"
 #include "capture.h"
 
-static int checkMode = 0;
+//static int checkMode = 0;
 
 /* 软件输出过载标志位 */
 static BOOL disChargOverLoad = FALSE;
@@ -43,8 +43,8 @@ void setDisChargOverLoad(void)
     /* 过载时间过长关闭输出 */
     if (num1 >= thirdStageProtectionDelay) {
         num1 = 0;
-        disChargOverLoad = TRUE;
         setPowerOutput(FALSE);
+        disChargOverLoad = TRUE;
     }
 
 
@@ -59,8 +59,8 @@ void setDisChargOverLoad(void)
     /* 过载时间过长关闭输出 */
     if (num1 >= secondStageProtectionDelay) {
         num1 = 0;
-        disChargOverLoad = TRUE;
         setPowerOutput(FALSE);
+        disChargOverLoad = TRUE;
     }
 }
 
@@ -82,20 +82,46 @@ void setSoftShortCircuit(uint16_t disChargCurrAdcNum)
 
     /* 三段式保护中的第一段 */
     static int num = 0;
-    if (disChargCurrAdcNum > firstStageProtectionCurr) {
+    if (disChargCurrAdcNum > firstStageProtectionValue) {
         num++;
     } else {
         num = 0;
     }
 
-    /* 200uS内都短路则关闭输出 */
+    /* 20uS内都短路则关闭输出 */
     if (num >= firstStageProtectionDelay) {
+        setPowerOutput(FALSE);
         shortCircuitFlag = TRUE;
         shortCircuit++;
-        setPowerOutput(FALSE);
         startSoftShortCircuitProtection();
     }
 }
+void setSoftShortCircuit1(void)
+{
+    // /* 三段式保护中的第一段 */
+    // static int num = 0;
+    // if (getDischargCurrent() > firstStageProtectionCurr) {
+    //     num++;
+    // } else {
+    //     num = 0;
+    // }
+
+    // /* 三段式保护中的第一段 */
+    // static int num = 0;
+    // if (getDischargCurrent() > firstStageProtectionCurr) {
+    //     num++;
+    // } else {
+    //     num = 0;
+    // }
+
+    // /* 200uS内都短路则关闭输出 */
+    // if (num >= firstStageProtectionDelay) {
+    //     setPowerOutput(FALSE);
+    //     shortCircuitFlag = TRUE;
+    //     shortCircuit++;
+    //     startSoftShortCircuitProtection();
+    // }
+}
 
 /**
   * @brief  得到放电过载状态
@@ -327,6 +353,19 @@ void lowInputLoadDetection(void)
 }
 
 
+/**
+  * @brief  判断充电电流是否过高,过高则关闭充电
+  * @param
+  * @retval
+  *
+  */
+void judgeChargCurr(void)
+{
+    if (getChargCurrent() > maxChargCurr) {
+        stopChargWork();
+    }
+}
+
 void checkAbnormal(void)
 {
     // checkTimeInit();
@@ -342,9 +381,9 @@ void checkAbnormal(void)
     /* 判断 */
     checkFFMOS_CON();
     setDisChargOverLoad();   
-    // setSoftShortCircuit();
+    setSoftShortCircuit1();
     lowInputLoadDetection();
-
+    judgeChargCurr();
 
     
 
diff --git a/APP/businessLogic/Src/inFlash.c b/APP/businessLogic/Src/inFlash.c
index 9a92608..168dfaa 100644
--- a/APP/businessLogic/Src/inFlash.c
+++ b/APP/businessLogic/Src/inFlash.c
@@ -292,6 +292,16 @@ void readTime(timeInfo *time)
 }
 
 
+/**
+ * @brief  初始化事件顺序记录
+ * @param
+ */
+
+void eventsOrderRecordStartInit(void)
+{
+
+}
+
 /**
  * @brief  将事件顺序记录在flash中
  * @param
diff --git a/APP/functionalModule/Src/capture.c b/APP/functionalModule/Src/capture.c
index 4cf3010..111126b 100644
--- a/APP/functionalModule/Src/capture.c
+++ b/APP/functionalModule/Src/capture.c
@@ -446,6 +446,8 @@ float get_OUT_VOLT_IN(void)
 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hdma)
 {
     if (hdma->Instance == ADC1) {
+        setSoftShortCircuit(adcBuff[DSG_CURR_NUM]);
+
         WORK_VOLT_capture.totalInData -= WORK_VOLT_capture.inData16[pointer];
         DSG_CURR_capture.totalInData -= DSG_CURR_capture.inData16[pointer];
         PV_VOLT_IN_capture.totalInData -= PV_VOLT_IN_capture.inData16[pointer];
@@ -475,8 +477,6 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hdma)
         DSG_CURR_capture.IODataF[3]     = (float32_t)DSG_CURR_capture.totalInData / indata16_size;
         PV_VOLT_IN_capture.IODataF[3]   = (float32_t)PV_VOLT_IN_capture.totalInData / indata16_size;
         CHG_CURR_capture.IODataF[3]     = (float32_t)CHG_CURR_capture.totalInData / indata16_size;
-
-        setSoftShortCircuit(DSG_CURR_capture.inData16[pointer - 1]);
     }
 }
 
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 268212c..902d7b8 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -152,7 +152,7 @@ void SystemClock_Config(void)
   */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
-  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
+//  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
   RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
diff --git a/tools/chargControlTypes.h b/tools/chargControlTypes.h
index 26d9ed0..a8a2cff 100644
--- a/tools/chargControlTypes.h
+++ b/tools/chargControlTypes.h
@@ -58,11 +58,13 @@ typedef enum {
 
 /* 顺序事件记录 */
 typedef enum {
-    firstStageProtection    = 1,    //第一段保护,短路保护
-    secondStageProtection   = 2,    //第二段保护,介于过载和短路之间
-    thirdStageProtection    = 3,    //第三段保护,过载保护
-    excessiveLoadIn         = 4,    //进入了电压降低中断
-    lowInputLoad            = 5,    //输入功率不足保护
+    firstStageProtection = 1,       //第一段保护,短路保护
+    secondStageProtection ,         //第二段保护,介于过载和短路之间
+    thirdStageProtection,           //第三段保护,过载保护
+    lowInputLoad,                   //输入功率不足保护
+    overTemperature,                //过温保护
+    stopTemperature,                //停止温度保护
+    overchargCurr,                  //充电功率过大保护
 }eventsOrderRecordMode;
 
 
diff --git a/tools/configParameter.h b/tools/configParameter.h
index 6a60985..f991ad1 100644
--- a/tools/configParameter.h
+++ b/tools/configParameter.h
@@ -28,10 +28,13 @@
 // const uint32_t lowInputLoadDetectionDelay = 30;   // 120S
 
 
-/* 第一段保护的延时时间(单位100uS) */
-#define firstStageProtectionDelay 2    // 200uS
-/* 第一段保护的电流(单位A) */
+// /* 第一段保护的延时时间(单位100uS) */
+/* 第一段保护的延时时间(单位10uS) */
+#define firstStageProtectionDelay 2
+// /* 第一段保护的电流(单位A) */
 #define firstStageProtectionCurr 50.0f
+/* 第一段保护的电流采集的ADC的值 */
+#define firstStageProtectionValue 3412
 
 /* 第二段保护的延时时间(单位100uS) */
 #define secondStageProtectionDelay 50000    // 5S
@@ -51,6 +54,8 @@
 /* 输入功率较低延时电流(单位A) */
 #define lowInputLoadDetectionVolt 10.0f
 
+/* 最大充电电流(A) */
+#define maxChargCurr 35.0f
 
 
 #endif