Files
motor/BSP/bsp.h
T
2024-12-02 17:33:05 +08:00

159 lines
2.5 KiB
C

#ifndef __BSP_H__
#define __BSP_H__
#include "stm32f1xx_hal.h"
#include "stdbool.h"
#include "main.h"
#include "tim.h"
typedef enum {
ID_TYPE_HID = 0X00, //0x00 ~ 0x10 都是界面
ID_TYPE_MOT = 0x40, //0x40 ~ 0x7F 都是伺服电机
ID_TYPE_DIO = 0x80, //0x80 ~ 0x90 都是数字输入和输出
ID_TYPE_ANL = 0xA0, //0xA0 ~ 0xB0 都是模拟量
}ID_TYPE_ENUM;
typedef enum {
COMM_TYPE_485 = 0,
COMM_TYPE_CAN = !COMM_TYPE_485
}COMM_TYPE_ENUM;
typedef enum {
COMM_DIR_RX = 0x00,
COMM_DIR_TX = !COMM_DIR_RX
}COMM_DIR_ENUM;
typedef enum {
LED_STATE_OFF = 0x00,
LED_STATE_ON = !LED_STATE_OFF,
}LED_STATE_ENUM;
typedef enum {
LED_GREEN = 0x01,
LED_RED = 0x02,
}LED_CHANNEL_ENUM;
typedef enum {
MOTOR_MS_1 = 1,
MOTOR_MS_8 = 8,
MOTOR_MS_16 = 16,
MOTOR_MS_32 = 32,
MOTOR_MS_64 = 64
}MOTOR_MS_ENUM;
typedef enum {
MOTOR_DIR_CW = 0x00,
MOTOR_DIR_CCW = !MOTOR_DIR_CW,
}MOTOR_DIR_ENUM;
typedef enum {
MOTOR_DISNABLE = 0x00,
MOTOR_ENABLE = !MOTOR_DISNABLE,
}MOTOR_STATE_ENUM;
typedef struct SERIAL_s
{
char *name;
UART_HandleTypeDef *huart;
uint8_t *recv_buff;
size_t recv_head;
size_t recv_tail;
size_t recv_buff_len;
size_t recv_max_used_len;
unsigned char isOverLoop;
uint8_t *send_buff[2];
size_t send_head;
size_t send_tail;
size_t send_buff_len;
size_t send_max_used_len;
uint8_t sel;
bool sending;
bool isbusy;
void (*setDir)(COMM_DIR_ENUM dir);
struct SERIAL_s *next_ptr;
}SERIAL_t;
typedef SERIAL_t* SERIAL_ptr;
extern SERIAL_t serial1;
extern SERIAL_t serial3;
unsigned char SYS_getID(void);
unsigned char SYS_getKey(void);
void COMM_setSel(COMM_TYPE_ENUM type);
void COMM_setDir(COMM_DIR_ENUM dir);
void LED_setState(LED_CHANNEL_ENUM channel,LED_STATE_ENUM state);
void LED_setToggle(LED_CHANNEL_ENUM channel);
void MOTOR_setMS(MOTOR_MS_ENUM ms);
void MOTOR_setEn(MOTOR_STATE_ENUM state);
void MOTOR_setDir(MOTOR_DIR_ENUM dir);
void MOTOR_setStep(unsigned char step);
int SERIAL_Init(SERIAL_t *serial,char *name,UART_HandleTypeDef *huart,size_t send_len, size_t recv_len);
bool SERIAL_Write(SERIAL_t *serial, uint8_t *data, size_t len);
size_t SERIAL_Read(SERIAL_t *serial, uint8_t *buff, size_t maxlen);
void SERIAL_StartRecv(SERIAL_t *serial);
void SERIAL_StopRecv(SERIAL_t *serial);
extern volatile uint32_t tick_count_200Hz;
void tick_init(void);
void tick_count(void);
uint32_t get_ticks_msec(void);
uint32_t get_ticks_usec(void);
void HAL_Delay_usec(uint32_t ticks_usec);
#endif //end BSP_H