#ifndef __CANCTRL_H__ #define __CANCTRL_H__ #include "config.h" #if (COMM_CAN != 0) #include "can.h" //--------------------------------------------------------------------------------------------- //------------------------------------------------------------------------------- #ifndef HCAN #define HCAN hcan #endif //------------------------------------------------------------------------------- #ifndef CAN_DATA_LEN #define CAN_DATA_LEN 8 #endif #ifndef RESV_PKT_LIST_NUM #define RESV_PKT_LIST_NUM 16 #endif #ifndef TRANS_PKT_LIST_NUM #define TRANS_PKT_LIST_NUM 16 #endif typedef struct { CAN_TxHeaderTypeDef canTxhead; u8 data[CAN_DATA_LEN]; }CanTxMsg; typedef struct { CAN_RxHeaderTypeDef canRxhead; u8 data[8]; }CanRxMsg; typedef struct { CanRxMsg pktRxList[RESV_PKT_LIST_NUM]; // 接收缓冲区 CanRxMsg * pktRxListHead; // 头指针 CanRxMsg * pktRxListTail; // 尾指针 int pktRxNumber; // 有效个数 }CanRxCtrl; typedef struct { CanTxMsg pktTxList[TRANS_PKT_LIST_NUM]; // 发送缓冲区 CanTxMsg * pktTxListHead; // 头指针 CanTxMsg * pktTxListTail; // 尾指针 int pktTxNumber; // 有效个数 int sendingFlag; // 发送标志 }CanTxCtrl; //--------------------------------------------------------------------------------------------- void InitCanCtrl(void); void DefaultCanFilter(u8 fifo); void RegistFilter(void*func); int SendACANDataPacket(CanTxMsg * pMsg); int GetACanDataPacket(CanRxMsg * pMsg); //--------------------------------------------------------------------------------------------- #endif #endif