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;