159 lines
2.5 KiB
C
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
|
|
|