This repository has been archived on 2025-01-02. You can view files and clone it, but cannot push or open issues or pull requests.
torsion/User/board/board.h

81 lines
1.7 KiB
C

#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 2 1
#define PACKET_STX 0xff // 包头
#define PACKET_ETX 0x3c // 包尾
#define MASTER_CODE 0x00 // 状态码-主机
// 最大数据长度
#define DATA_MAX_LEN 128
// 最小帧长度:包头 + 状态码 + 设备号 + 命令号 + 长度 + 校验 + 包尾
#define PACKET_MIN_LEN 8
// 最大帧长度
#define PACKET_MAX_LEN (DATA_MAX_LEN + PACKET_MIN_LEN)
// 电机初始默认值
#define PULSE_REV 18000.0 // 每圈脉冲数(驱动器脉冲)
#define MIN_STEP_ANGLE (360 / PULSE_REV) // 最小步距
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,
SET_DRIVER_PULSE,
GET_MIN_STEP,
GET_MOTOR_STATE,
MOTOR_MOVE,
MOTOR_STOP,
} motor_cmd_e;
typedef enum
{
GET_TORS_VALUE,
} sensor_cmd_e;
typedef enum
{
ST_DEV_NORMAL,
ST_DEV_BUSY,
ST_MSG_MISS,
} status_code_e;
typedef struct
{
uint8_t state; // 状态
uint8_t dev_no; // 设备号
uint8_t cmd_no; // 命令号
uint8_t len; // 长度
uint8_t data[DATA_MAX_LEN]; // 数据
} frame_msg_t;
extern void host_uart_init(void);
extern void board_init(void);
extern void host_data_deal(void);
#endif // __BOARD_H__