comm.h
来自「LPC2129实现从SPI通讯和两个串口定时器中断」· C头文件 代码 · 共 361 行 · 第 1/2 页
H
361 行
#ifndef _COMM_H
#define _COMM_H
#ifdef COMM_GLOBALES
#define COMM_EXTERN
#else
#define COMM_EXTERN extern
#endif
//********************全局变量设置**************************************************/
#define UART_TOL 2 //设置处理UART的个数
#define DATA_BUF_NUM 64 //设置每一缓冲区的数据长度
COMM_EXTERN int recv_data;
COMM_EXTERN char transMode;
COMM_EXTERN char para1; //锁定航向PID参数1
COMM_EXTERN char para2; //锁定航向PID参数2
COMM_EXTERN char gyro1;
COMM_EXTERN char gyro2;
COMM_EXTERN char angle1;
COMM_EXTERN char angle2;
COMM_EXTERN unsigned char pos[12]; //读回的驱动器器参数
COMM_EXTERN unsigned char v[5];
COMM_EXTERN unsigned char i[5];
COMM_EXTERN unsigned char i[5];
COMM_EXTERN unsigned char ac[5];
COMM_EXTERN unsigned char sp[5];
COMM_EXTERN unsigned char por[3];
COMM_EXTERN unsigned char in[3];
COMM_EXTERN unsigned char der[3];
COMM_EXTERN unsigned char en[5];
COMM_EXTERN int lspeed;
COMM_EXTERN int rspeed;
struct DATA_BUF
{
unsigned char data[DATA_BUF_NUM]; //数据缓冲区
unsigned char IP_addr; //发送数据的IP地址
unsigned char command; //命令字
unsigned char length; //实际通讯的字节数
unsigned char sum; //所有的和
unsigned char state; //BIT7: (TRUE):表示帧状态正确;
//BIT0: (TRUE):表示一个新的数据帧接收完
};
COMM_EXTERN struct DATA_BUF TXD_BUF[UART_TOL]; //定义TXD_BUF_NUM个发送缓冲区的个数
COMM_EXTERN struct DATA_BUF RXD_BUF[UART_TOL]; //定义RXD_BUF_NUM个接收缓冲区的个数
#include "LPC2294.h"
#include "config.h"
//COMM_EXTERN int i;
#define RXD_WAIT 0X00
#define GET_ERROR 0X80
#define GET_LEN 0X3f
#define SET_NEW 0X01
/***********************************************************************************/
#define IP_ADDR 0x01 //设置IP地址
#define IP_MAIN 0X00 //主机地址
//**************有关UART通讯命令字宏定义*********************************************
#define UART_START0 0X55 //起动命令字
#define UART_START1 0XAA //起动命令字
#define VERSION_RQ 0X10 //设备信息查询
#define SYS_SET 0X11 //系统设置
#define PERFORM_1 0X12 //进入系统演示程序1
#define PERFORM_2 0X13 //进入系统演示程序2
#define PERFORM_3 0X14 //进入系统演示程序3
#define MOVE_RESET 0X20 //运动软复位指令
#define MOVE_HOLD 0X21 //运动刹车控制指令
#define MOVE_DIS_L_SET 0X22 //设置左电机位置
#define MOVE_DIS_R_SET 0X23 //设置右电机位置
#define MOVE_SPEEDL_SET 0X24 //设置左电机的速度
#define MOVE_SPEEDR_SET 0X25 //设置右电机的速度
#define MOVE_SPEED_SET 0X26 //设置双电机的速度
#define MOVE_ACCER_SET 0X27 //设置双电机的加速度
#define MOVE_STATE_RQ 0X28 //运动参数查询
#define MOVE_PID_SET 0X29 //设置PID参数
#define MOVE_ELEC_RQ 0X2A //电气参数查询
#define MOVE_PROTECT 0X2E //自我保护功能选择
#define MOVE_SPEED_ANGLE_SET 0X2B
#define MOVE_ANGLE_SPEED_SET 0X2C
#define TURN_ANGLE_SPEED_SET 0X2D
#define GET_STANDARD 0X2F //标定
#define SENSOR_CS_RQ 0X30 //请求读取超声波传感器的距离信息
#define SENSOR_HY_RQ 0X36 //请求读取全部红外传感器信息
#define IO_OUT 0X40 //IO输出
#define IO_IN_RQ 0X41 //IO输入请求
#define IO_PWM1 0X42 //PWM1输出
#define IO_PWM2 0X43 //PWM2输出
#define IO_PWM3 0X44 //PWM3输出
#define IO_PWM4 0X45 //PWM4输出
#define MOTOR_RESET 0X60 //电机设备复位
#define MOTOR_HOLD 0X61 //电机刹车控制
#define MOTOR_DIS_SET 0X62 //电机位置设置
#define MOTOR_SPEED_SET 0X64 //电机速度设置
#define MOTOR_ACCER_SET 0X67 //设置双电机的加速度
#define MOTOR_STATE_RQ 0X68 //运动参数查询
#define MOTOR_PID_SET 0X69 //设置PID参数
#define MOTOR_ELEC_RQ 0X6A //电气参数查询
/***********************************************************************************/
void InitComm ( void );
/****************************************************************************
* 名称:IRQ_UART0()
* 功能:串口UART0接收中断。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void __irq IRQ_UART0(void); //与总线通讯串口控制
/****************************************************************************
* 名称:IRQ_UART1()
* 功能:串口UART1接收中断。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void __irq IRQ_UART1(void);
/****************************************************************************
* 名称:UART0_Ini()
* 功能:初始化串口0。设置其工作模式及波特率。
* 入口参数:baud 波特率
datab; 字长度,5/6/7/8
stopb; 停止位,1/2
parity; 奇偶校验位,0为无校验,1奇数校验,2为偶数校验
*
* 出口参数:返回值为1时表示初化成功,为0表除参数出错
****************************************************************************/
uint8 UART0_Ini(uint32 baud, uint8 datab, uint8 stopb, uint8 parity );
/****************************************************************************
* 名称:perform_command()
* 功能:接收上位机指令并解析。
* 入口参数:com_pk 需要解析的桢数据
* 出口参数:无
****************************************************************************/
void perform_command (struct DATA_BUF *com_pk);
/****************************************************************************
* 名称:send_same_back_uart()
* 功能:用于正确帧的原样返回发送
* 入口参数:uart_num 要返回的串口号
rxd_pk 需要同样返馈的数据缓冲区
* 出口参数:无
****************************************************************************/
void send_same_back_uart(uint8 uart_num,struct DATA_BUF *rxd_pk);
/****************************************************************************
* 名称:send_error_back_uart()
* 功能:用于错误帧的返馈发送
* 入口参数:uart_num 要反馈数据的串口号
rxd_pk 需要同样返馈的数据缓冲区
* 出口参数:无
****************************************************************************/
void send_error_back_uart(uint8 uart_num,struct DATA_BUF *rxd_pk);
void uart_rx_isr(uint8 uart_num,uint8 uart_UDR);
/****************************************************************************
* 名称:operate_driver()
* 功能:驱动器操作和电机控制。
* 入口参数:com_pk 需要解析的桢数据
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?