9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
/*!
|
|
\file can.h
|
|
\brief CAN配置头文件
|
|
|
|
\version 2026-03-09, V1.4.0, firmware for GD32H7xx
|
|
*/
|
|
|
|
#ifndef CAN_H
|
|
#define CAN_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define CAN_RX_BUFFER_SIZE 32U
|
|
|
|
typedef enum {
|
|
E_CAN_0 = 0,
|
|
E_CAN_1 = 1,
|
|
E_CAN_2 = 2
|
|
} E_CAN_ID;
|
|
|
|
typedef struct {
|
|
uint32_t ID;
|
|
uint8_t Len;
|
|
uint8_t Data[8U];
|
|
} CAN_DATA;
|
|
|
|
/* CAN统一初始化接口 */
|
|
void v_can_interface_init(void);
|
|
uint8_t u8_can_is_initialized(void);
|
|
|
|
/* CAN 中断分发(供 gd32h7xx_it.c 复用) */
|
|
void v_can_irq_handler(uint8_t can_port);
|
|
|
|
/* 对外统一发送/接收接口(扩展帧、数据帧) */
|
|
void v_can_tx(E_CAN_ID can_id, const CAN_DATA *can_data);
|
|
uint8_t u8_can_rx(E_CAN_ID can_id, CAN_DATA *can_data);
|
|
|
|
/* 兼容当前工程的原统一接口 */
|
|
uint8_t can_send_data(uint8_t can_port, uint32_t id, uint8_t *data, uint8_t dlc, uint8_t ide, uint8_t rtr);
|
|
uint8_t can_receive_data(uint8_t can_port, uint32_t *id, uint8_t *data, uint8_t *dlc, uint8_t *ide, uint8_t *rtr);
|
|
|
|
/* 扩展帧ID打包/解析工具 */
|
|
uint32_t u32_get_can_ID(uint8_t prior, uint8_t cmd, uint8_t desAddr, uint8_t oriAddr);
|
|
uint8_t u8_can_ID_unpack(uint32_t u32_id, uint8_t *prior, uint8_t *cmd, uint8_t *desAddr, uint8_t *oriAddr);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* CAN_H */
|
|
|