Mini_croe_Sick/User/device/can.h
2025-04-12 00:56:44 +08:00

85 lines
1.7 KiB
C

#pragma once
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ----------------------------------------------------------------- */
#include <cmsis_os2.h>
#include <stdbool.h>
#include "bsp\can.h"
#include "device\device.h"
/* Exported constants ------------------------------------------------------- */
#define CAN_TX_SICK_BUF_SIZE (8)
#define CAN_RX_SICK_BUF_SIZE (8)
#define CAN_TX_BUF_SIZE_MAX (8)
#define CAN_RX_BUF_SIZE_MAX (8)
/* Exported macro ----------------------------------------------------------- */
/* Exported types ----------------------------------------------------------- */
// /* 型号 */
typedef enum {
CAN_SICK1 = 0,
CAN_SICK2,
CAN_SICK3,
CAN_SICK4,
} CAN_Sick_t;
// /* 电机反馈信息 */
// typedef struct {
// float distance;
// float save0;
// float save1;
// float save2;
// } CAN_Sick_Feedback_t;
typedef struct {
float as_array[4];
struct {
float s1;
float s2;
float s3;
float s4
} named;
} CAN_Sick_Output_t;
typedef struct {
CAN_Sick_Output_t sick;
} CAN_Output_t;
typedef struct {
BSP_CAN_t sick;
BSP_CAN_t c_board;
} CAN_Params_t;
typedef struct {
uint32_t recive_flag;
CAN_Sick_t sick;
const CAN_Params_t *param;
struct {
uint32_t sick;
} mailbox;
osMessageQueueId_t msgq_raw;
} CAN_t;
typedef struct {
CAN_RxHeaderTypeDef rx_header;
uint8_t rx_data[CAN_RX_BUF_SIZE_MAX];
} CAN_RawRx_t;
typedef struct {
CAN_TxHeaderTypeDef tx_header;
uint8_t tx_data[CAN_TX_BUF_SIZE_MAX];
} CAN_RawTx_t;
// /* Exported functions prototypes -------------------------------------------- */
int8_t CAN_Init(CAN_t *can, const CAN_Params_t *param);
#ifdef __cplusplus
}
#endif