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 + -
显示快捷键?