#ifndef __BOARD_H__ #define __BOARD_H__ #include "main.h" #include "adcs.h" #include "uarts.h" // 串口协议参数 #define UART_RXSIZE (240u) // 接收缓冲区 240个字节 #define UART_TXSIZE (240u) // 发送缓冲区 240个字节 // 包头 + 状态码 + 设备号 + 命令号 + 长度 + 数据 + 校验 + 包尾 // 1 1 1 1 1 0~128 1 1 #define PACKET_STX 0xff // 包头 #define PACKET_ETX 0x3c // 包尾 #define PACKET_ #define DATA_LEN_INDEX 4 // 数据长度偏移 #define DATA_INDEX 5 // 数据偏移 // 最大数据长度 #define DATA_MAX_LEN 128 // 最小帧长度:包头 + 状态码 + 设备号 + 命令号 + 长度 + 校验 + 包尾 #define PACKET_MIN_LEN 7 // 最大帧长度 #define PACKET_MAX_LEN (DATA_MAX_LEN + PACKET_MIN_LEN) // 电机初始默认值 #define PULSE_REV 18000.0 // 每圈脉冲数(驱动器脉冲) #define MIN_STEP_ANGLE (360 / PULSE_REV) // 最小步距 typedef enum { IDLE = 0, // 空闲 BUSY = 1, // 忙碌 } host_state_e; typedef enum { ADC_SENSOR, MOTOR, } dev_id_e; typedef enum { UART_NUM_1, UART_NUM_2, UART_NUM_3, UART_NUM_4, UART_NUM_5, UART_NUM_MAX, } uart_num_e; typedef enum { SET_MOTOR_SPEED, GET_MIN_STEP, GET_MOTOR_STATE, MOTOR_MOVE, MOTOR_STOP, } motor_cmd_e; typedef enum { GET_TORSION_VALUE, GET_PRESSURE_VALUE, GET_FLOW_VALUE, GET_ALL_VALUE, } sensor_cmd_e; typedef enum { ST_DEV_NORMAL, ST_DEV_BUSY, ST_DEV_MISS, } status_code_e; typedef struct { uint8_t head; // 包头 uint8_t state; // 状态 uint8_t dev_no; // 设备号 uint8_t cmd_no; // 命令号 uint8_t len; // 长度 uint8_t data[DATA_MAX_LEN]; // 数据 } frame_msg_t; typedef struct { uint8_t dir; float32 angle; } motor_ctrl_t; extern void board_init(void); extern uint16_t get_torsion_adc(void); extern float32 torsion_detect(void); extern uint16_t get_pressure_adc(void); extern float32 pressure_detect(void); extern uint16_t get_flow_adc(void); extern float32 flow_detect(void); extern void host_rx_msg_deal(void); extern void motor_process_init(void); #endif // __BOARD_H__