#ifndef __BOARD_H__ #define __BOARD_H__ #include "main.h" #include "adcs.h" #include "uarts.h" #define SELF_TEST 1 // 串口协议参数 #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 * 5) // 每圈脉冲数(驱动器脉冲) #define MIN_STEP_ANGLE (360 / PULSE_REV) // 最小步距 typedef enum { IDLE = 0, // 空闲 BUSY = 1, // 忙碌 } host_state_e; typedef enum { STOP = 0, // 停止 RUN = 1, // 运行 } motor_state_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 { ADC_SENSOR, // 传感器 MOTOR, // 电机 } dev_id_e; // 电机命令号 typedef enum { SET_MOTOR_SPEED, // 设置电机速度 MOTOR_MOVE, // 电机启动(参数1:方向,参数2:角度) MOTOR_STOP, // 电机停止 } motor_cmd_e; // 传感器命令号 typedef enum { GET_TORSION_VALUE, // 扭力 GET_INPUT_PRESS_VALUE, // 输入压力 GET_OUTPUT_PRESS_VALUE, // 输出压力 GET_INPUT_FLOW_VALUE, // 输入流量 GET_OUTPUT_FLOW_VALUE, // 输出流量 GET_ALL_VALUE, // 全部 } sensor_cmd_e; // 状态码 typedef enum { ST_DEV_NORMAL, // 正常 ST_DEV_BUSY, // 忙碌 ST_DEV_MISS, // 故障 ST_CMD_IVALID, // 无效 } status_code_e; // 测试 typedef enum { TEST_DEV_IDEL, TEST_DEV_SENSOR, TEST_DEV_MOTOR, TEST_DEV_MAX, } test_dev_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; typedef struct { uint8_t dev_id; uint8_t cmd_id; } test_t; extern uint16_t sensor_adc[GET_ALL_VALUE]; extern void board_init(void); extern uint16_t get_sensor_adc(uint8_t id); extern float32 torsion_detect(void); extern float32 pressure_detect(uint8_t id); extern float32 flow_detect(uint8_t id); extern void host_rx_msg_deal(void); extern void motor_process_init(void); extern void test_process(void); #endif // __BOARD_H__