#ifndef DRV_CAN_H #define DRV_CAN_H #define FRAME_PRO_0 (0) #define FRAME_PRO_1 (1) #define FRAME_PRO_2 (2) #define FRAME_PRO_3 (3) #define FRAME_PRO_4 (4) #define FRAME_PRO_5 (5) #define FRAME_PRO_6 (6) #define FRAME_PRO_7 (7) #define FRAME_PRO_D (FRAME_PRO_0) #define FRAME_PT_NEED_RSP (1) #define FRAME_PT_RSP (2) #define FRAME_PT_NO_RSP (3) #define PRINTF_TER_ID (0x45UL) #define SELF_ID (0x42UL) #define CTR_ID (0x43UL) #define BROCAST_ID (0x7FUL) #define CAN_TX_BUF_MAX (256) #define CAN_RX_BUF_MAX (256) #define CAN_RX_CTR_BRO_BUF_MAX (256) #define CAN_RX_TEST_BRO_BUF_MAX (256) #define get_index_total_value(x) ((x)?(x):(32)) #define Silent_Enable(x) gpio_bit_write(GPIOA,GPIO_PIN_7,(bit_status)(x)) #pragma pack (push,1) typedef struct { uint32_t other:3; uint32_t dest:7; uint32_t sour:7; uint32_t index:5; uint32_t total:5; uint32_t rsp:2; uint32_t pro:3; }HEAD; typedef struct { HEAD head; uint8_t* data; uint16_t len; }CAN_FRAME; #pragma pack(pop) extern CAN_FRAME can_ctr_self; extern CAN_FRAME can_ctr_bro; extern CAN_FRAME can_test_bro; enum { BMS_1_SELF, BMS_1_CUR_VOL_SELF, BMS_1_RSP, BMS_1_RESEND, TIMEOUT_BMS_1_RESEND, BMS_2_SELF, BMS_2_CUR_VOL_SELF, BMS_2_RSP, BMS_2_RESEND, TIMEOUT_BMS_2_RESEND, CTR_SELF, CTR_RSP, CTR_RESEND, TIMEOUT_CTR_RESEND, ADAS_SELF, ADAS_RSP, ADAS_RESEND, TIMEOUT_ADAS_RESEND, OTHER_SEND, CAN_TEST }; void CAN_Config_HW(void); void CAN_Config(void); uint16_t Get_Data_Can(CAN_FRAME*app_can_frame); int8_t Send_Data_Can(CAN_FRAME*app_can_frame,uint8_t from); void Check_Can_Poll(void); void Can_Stop_Send(void); #endif