⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.h

📁 本人s12的一部分机器人巡线程序
💻 H
字号:
//all the global defines should be in this .h file
//all the global variables should be defined in this .h file with EXT
//all the global function should be declared in this .h file
#include "MYmain.H"
#include "MYmath.h"
typedef unsigned char byte;
typedef unsigned int  word;
typedef unsigned long dword;
typedef unsigned long dlong[2];
#define Baud_9600  55
#define Baud_19200 26 

 #define Starts      8
 #define FollowLines 9
 #define Swerve      10
 #define Hand_GGs    11
 #define Hand_UDs    12
 #define Comm        13
/***********************************************/
/*查地图使用到的宏定义*/ 
#define NOLL000  0//不动作                 NOLL0000
#define Dirc_Fr 1//前进               Front
#define Dirc_Bc  2//后退               Back2
#define Angl_Ri 1//右转             Right
#define Angl_Le  2//左转             Left2
#define Angl_90    90//转弯90度        Ag090
#define Angl_18   180//转弯180度      Ag180
#define Hand_Co  1//手臂抓取  (Closed)  Close
#define Hand_Op 2//手臂松开   (Open)    Open2
#define Hand_Up   1//手臂抬升 (Up)      Up001
#define Hand_Dw 2//手臂下降   (Down)    Down2
#define Hand_Sp 1 //手臂伸长  (Spread)  Sprd1
#define Hand_Sh  2 //手臂缩短 (Short)   Short
#define Line_01   1
#define Line_02   2
#define Line_03   3
#define Line_04   4
#define Line_05   5
#define Line_06   6
#define Line_07   7
#define Line_08   8
#define Line_09   9
#define Sped_15   15
#define Sped_20   20
#define Sped_25   25
#define Sped_30   30
#define Sped_35   35
#define Sped_40   40
#define Sped_45   45
#define Sped_50   50
#define Sped_55   55
#define Sped_60   60
#define Sped_65   65 
    

#define CRGFLG_LOCK      (*((volatile unsigned char*)(0x00000037)))


#define TASK_STK_SIZE  200



typedef struct{
INT8U	PPAGE;
}TASKDATA;


/*******************************************/
	//global variables definition
/******************************************/

EXT OS_STK TaskStartStk[TASK_STK_SIZE];   //开始任务堆栈设置
EXT OS_STK Task_FollowLineStk[TASK_STK_SIZE]; //循线任务堆栈设置
EXT OS_STK Task_LineCounterStk[TASK_STK_SIZE];//数线任务堆栈设置
EXT OS_STK Task_SwerveStk[TASK_STK_SIZE];  //转弯任务堆栈设置
EXT OS_STK Task_SnatchStk[TASK_STK_SIZE];  //抓取任务堆栈设置
EXT OS_STK Task_UpdownStk[TASK_STK_SIZE];  //升降任务堆栈设置
EXT OS_STK Task_HostServantCommStk[TASK_STK_SIZE];//与电脑通讯任务堆栈设置
EXT OS_STK Task_SpreadShortStk[TASK_STK_SIZE];//手臂伸缩任务设置


EXT OS_EVENT *Semprintp;
EXT INT8U err;
EXT TASKDATA TaskStartData;
EXT TASKDATA Task_FollowLineData;
EXT TASKDATA Task_LineCounterData;
EXT TASKDATA Task_SwerveData;
EXT TASKDATA Task_SnatchData;
EXT TASKDATA Task_UpdownData;
EXT TASKDATA Task_HostServantCommData;
EXT TASKDATA Task_SpreadShortData;

extern BOOLEAN Key_TaskStart_EN;//开始任务执行允许
extern BOOLEAN Key_TaskSwerve_EN;//转弯任务允许密钥
extern BOOLEAN Key_TaskSnatch_EN;//手臂抓取任务允许密钥
extern BOOLEAN Key_TaskUpdown_EN;//手臂升降任务允许密钥
extern BOOLEAN key_TaskSpreadShort_EN;//手臂伸缩任务允许密钥
extern uchar Comm_time; //通讯时间间隔计算
extern BOOLEAN key_Comm;//通讯命令
extern BOOLEAN Follow_Stuts;
extern BOOLEAN STUTS;
extern uchar FrontPositionT,e_f,e_fL,e_b,e_bL,LeftSpeed,LeftSpeedL,RightSpeed,RightSpeedL,equ_count,Line_a;
extern uchar Line_Step;//线路动作步骤  
extern uchar Line_num,Dir_FFBB,Angle_RL,Angle_9_18,Hand_GG,Hand_UD;
extern uchar Key_TaskSnatch_EN,Key_TaskUpdown_EN;
extern uint MidspeedC;
extern float Midspeed;//给定的左右电机平均速度

extern uchar sci0_rcv_data;
extern uchar sci0_rcv;
extern uchar sci0_sent_data[20];
extern uchar sci0_sent;
extern uchar sci1_rcv_data;
extern uchar sci1_rcv;
extern uchar sci1_sent; 
extern uchar sci1_sent_data[20];
extern uchar AD_bData0[9];
extern uchar AD_bData1[9];

extern BOOLEAN Follow_Start,first_start;
extern uchar Follow_Num,direction,directionR,directionL;
extern uchar angle;//旋转角度


extern ulong leftspeedcount,rightspeedcount;
/*****************************************************/
//SCI0 SCI1 
/*****************************************************/
/************************************/
	//global functions declaration
	//their define is in Hardware.c or Userlib.c (except main)
/************************************/

//in Hardware.c
/**********************************************************/
/*初始化设置相关函数*/
void HardwareInit(void);
void PLL_Init(uchar synr,uchar refdv);
void uart0_init_bode(uchar sci0_cr2,uint sci0_bode);
void uart0_string_int(uchar var_string[],uchar num);
void uart1_init_bode(uchar sci1_cr2,uchar sci1_bode);
void uart1_string_int(uchar var_string[],uchar num);
void ATD0_Init_Int(void);
void ATD1_Init_Int(void);
void ATD0_Init_Rog(void);
void ATD1_Init_Rog(void);
void TIME_Init(void);
void TIME_ECT_Init(void);
void PWM_Init(void);
/*****************************************************/
/*手臂电机功能函数*/
void Motor_Up_En(uchar duty);
void Motor_Dw_En(uchar duty);
void Motor_UpDw_Stop(uchar duty);
void Motor_Op_En(uint duty);
void Motor_Co_En(uint duty);
void Motor_OpCo_Stop(uint duty);
void Motor_Le_En(uchar duty);
void Motor_Re_En(uchar duty);
void Motor_LeRe_Stop(uchar duty);
void Motor_Sp_En(uint duty);
void Motor_Sh_En(uint duty);
void Motor_SpSh_Stop(uint duty);

/******************************************************/
/*读取AD转换值行走电机位置计算及发送速度通讯函数*/
void ATD0_Get_Rog();
void ATD1_Get_Rog();
uchar position(uchar a[],uchar d);
uchar position_sw(uchar e);
BOOLEAN Right_speed_sent(uchar R_Speed,uchar directionR);//发送右侧电机给定速度
BOOLEAN Left_speed_sent(uchar R_Speed,uchar directionL) ;//发送左侧电机给定速度

/*********************************************************/
/*查询地图后开启各个任务功能函数*/
void Follow_Line(BOOLEAN Follow_Strt,uchar Follow_Numb,uchar Follow_Dir);//设定循线方向速度等
void Angle_RL_9_18(uchar Angle_dir,uchar A_9_18);
void Hand_opco(uchar hand_OPCO);
void Hand_updw(uchar hand_UPDW);
void Hand_spsh(uchar Hand_SPSH);
void Follow_Line(BOOLEAN Follow_Strt,uchar Follow_Numb,uchar Follow_Dir);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -