diff --git a/Firmware/Source/Component/Key/Key_user.c b/Firmware/Source/Component/Key/Key_user.c
index bccf963104868f5ce0e7a4660ff780c12902ad1d..c11a4202397e368d970b75cbcd049854336d9859 100644
--- a/Firmware/Source/Component/Key/Key_user.c
+++ b/Firmware/Source/Component/Key/Key_user.c
@@ -32,7 +32,7 @@ void Key_Operation_Left(Key_Event_en_t enKeyEvent)//选择
 		break;
 	case KEY_EVENT_LONG_PRESS_4:	//10s
         /* 进入630H升级MCU模式 */
-        Get_Into_630H_Update_MCU_Mode();
+        // Get_Into_630H_Update_MCU_Mode();
 		break;
 	case KEY_EVENT_OFF_TO_ON:		
 		break;
diff --git a/Firmware/Source/Component/PowerManagement/PowerManag_user.c b/Firmware/Source/Component/PowerManagement/PowerManag_user.c
index 1b94cfc856fe5efea9f01cc0e984a43adc036689..db4b8d227195cc2a646417e6c1c7dd461f0515b5 100644
--- a/Firmware/Source/Component/PowerManagement/PowerManag_user.c
+++ b/Firmware/Source/Component/PowerManagement/PowerManag_user.c
@@ -184,7 +184,7 @@ static Power_Status_em Power_Stay_OFF(void)
     }
     else
     {
-        if ((Common_GetIgnOffTime() < 20000))
+        if ((Common_GetIgnOffTime() < 3000))
         {
             u8PowerSts = EM_IGN_OFF;
         }
diff --git a/Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/include/can.h b/Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/include/can.h
index 68054bb637443d8a3bc7c37ef1293e6d0487a446..5ec1ba0b3c4083a7c7c38ace48fdef798c460681 100644
--- a/Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/include/can.h
+++ b/Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/include/can.h
@@ -384,7 +384,7 @@ typedef struct
 
 #define CAN_CCTRL_OPMODE_IDLE 				((uint16_t)0x0007U)
 #define CAN_CCTRL_OPMODE_NORMAL 			((uint16_t)0x0106U)//0x0100U
-#define CAN_CCTRL_OPMODE_NORMAL_ABT 		((uint16_t)0x0205U)//0x0200U
+#define CAN_CCTRL_OPMODE_NORMAL_ABT 	((uint16_t)0x0205U)//0x0200U
 #define CAN_CCTRL_OPMODE_ONLY_RX 			((uint16_t)0x0304U)//0x0300U
 #define CAN_CCTRL_OPMODE_SHOT 				((uint16_t)0x0403U)//0x0400U
 #define CAN_CCTRL_OPMODE_TEST 				((uint16_t)0x0502U)//0x0500U
diff --git a/Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/src/can.c b/Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/src/can.c
index 94527be56a1b3352bc28600a0befc24350eba85b..6faf4a18aee44c8bc738d095bf900d5e6a02f22c 100644
--- a/Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/src/can.c
+++ b/Firmware/Source/Device/Cmsemicon/BAT32A279/Library/Driver/src/can.c
@@ -2,7 +2,7 @@
   ******************************************************************************
   * @file    can.c
   * @author  MCD Application Team
-  * @version V1.0.2
+  * @version V1.0.1
   * @date    2-April-2024
   * @brief   This file provides firmware functions to manage the following 
   *          functionalities of the Controller area network (CAN) peripheral:
diff --git a/Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/CAN/rte_can.c b/Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/CAN/rte_can.c
index 6f679e43b4036b70df945eea79cbd2d63649d542..21bbef5f0e2a381a58da3f6a8d890b72b46f5e51 100644
--- a/Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/CAN/rte_can.c
+++ b/Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/CAN/rte_can.c
@@ -3,10 +3,9 @@
 #include "isr.h"
 #include "rte_can.h"
 
-
+CANBuffList_t CanBufList = {0};
 CANMSG_Type* CANMSG;
 CanTxRxMsg CAN_RecvMsg;
-CANBuffList_t CanBufList = {0};
 can_rx_callback can_rx_handler = NULL;
 
 uint8_t Read_RingBuff(CanTxRxMsg *data)
@@ -20,29 +19,34 @@ uint8_t Read_RingBuff(CanTxRxMsg *data)
     CanBufList.length--;
     return 1;
 }
-
 /**
  * @brief CAN就收完成回调
  * 
  * @param msg 
  */
-static void can_recv_handler(void *msg)
+static void can_recv_handler(void)
 {
     INTC_ClearPendingIRQ(CAN0REC_IRQn);
 
     if (CAN_GetFlagStatus(CAN0, CAN_FLAG_REC) != RESET)
     {
         CAN_ClearFlag(CAN0, CAN_FLAG_REC);
+
         CAN_Receive_IT(CAN0, &CanBufList);
         Read_RingBuff(&CAN_RecvMsg);
-
+        CAN_Receive(CAN0,&CAN_RecvMsg,100);
         if (can_rx_handler != NULL)
         {
             can_rx_handler(&CAN_RecvMsg);
         }
     }
 }
+static void can_error_handler(void)
+{
+    INTC_ClearPendingIRQ(CAN0ERR_IRQn);
 
+    CANErr_Recover(CAN0);
+}
 /**
  * @brief CAN初始�?
  * 
@@ -97,11 +101,13 @@ uint8_t rte_can_init(can_config_st_t *config)
 
     CAN_OperatingModeRequest(CAN0, CAN_OpMode_Normal);
 
-    CAN_ITConfig(CAN0, CAN_IT_REC, ENABLE);
+    CAN_ITConfig(CAN0, CAN_IT_REC | CAN_IT_ERR_STATE | CAN_IT_ERR_PROTO, ENABLE); // |CAN_IT_TRX
 
     ISR_Register(CAN0REC_IRQn, can_recv_handler);
 
-    INTC_EnableIRQ(CAN0REC_IRQn);
+    //	ISR_Register(CAN0TRX_IRQn, can_tx_handler);
+
+    ISR_Register(CAN0ERR_IRQn, can_error_handler);
 
 //    ISR_DisRegister(CAN0REC_IRQn, can_recv_handler);
 
diff --git a/Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/CAN/rte_can.h b/Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/CAN/rte_can.h
index d1cba5529dd27a4ca5308c010004e6f3e32d96ef..7e84613490168da8b2f729c2ea5e86cdd1defce3 100644
--- a/Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/CAN/rte_can.h
+++ b/Firmware/Source/Device/Cmsemicon/BAT32A279/RTE/CAN/rte_can.h
@@ -31,7 +31,7 @@ typedef enum
 } CAN_CH;
 
 #pragma pack(4)
-typedef struct
+typedef struct  __attribute__((aligned(4)))
 {
     CAN_CH ch;
     CAN_freq freq;