///*
// * msp_LeiSai_Motor.c
// *
// *  Created on: Apr 12, 2024
// *      Author: Administrator
// */
//
//#include "MSP/msp_LeiSai_Motor.h"
//#include "MSP/msp_Modbus_crc16.h"
//#include "MSP/msp_DH_W_H.h"
//#include "MSP/msp_DC_CAN.h"
//#include<stdbool.h>
//UART_HandleTypeDef* Huart_LeiSai;
//
//SP_MSP_LeiSai_MotorParameters* M_LeiSai;
////extern SP_MSP_DH_Handset_Parameters *DH_WH_BING;
//extern SP_MSP_DH_CAN_Parameters* DC_CAN;
//extern uint8_t DO1_ON[8];
//extern uint8_t DO1_OFF[8];
//extern bool isOpen;
//extern bool isIn ;
//void  GF_LeiSai_Unscramble_Callback();
//uint8_t LeiSai_stas[4];
//uint8_t Num_Motor_LS ;
//int  LeiSai_Quit_Falg=1;
//int a=0;
//
//
//uint8_t GF_MSP_LeiSai_Motor_Init(UART_HandleTypeDef* huart,SP_MSP_LeiSai_MotorParameters *_Bat_LeiSai,uint8_t Num_Motor_p)
//{
//	Huart_LeiSai=huart;
//	GF_BSP_Interrupt_Add_CallBack(DF_BSP_InterCall_RS485_1_RxCpltCallback, GF_LeiSai_Unscramble_Callback);//绑定中断回调函数
//	Num_Motor_LS = Num_Motor_p;
//	M_LeiSai = _Bat_LeiSai;         //同步地址指针，此步极为关键
//	return 1;
//}
//
//void  GF_LeiSai_Unscramble_Callback()
//{
//
//}
//
//
//
//uint8_t LSMotor_Index=0x00;
//uint16_t LSMotor_State=0;
//int Motor_Run_Mode_flag=0;
//
//void GF_MSP_LSMotor_Control_Timer()
//{
//
//	uint8_t Order[8];
//	uint8_t Order2[8];
//
//	int16_t Target_Value=0;
//	unsigned short CRC_Value;
//	switch( LSMotor_State)                  //每（2*5）ms发一条指令，这个逻辑可以自己带入switch串一遍，便于理解
//	{
//			case 0:
//					switch( Motor_Run_Mode_flag)
//					{
//					case 0:      //速度模式
//						Order[0]=0X01;
//						Order[1]=0X06;
//						Order[2]=0X62;
//						Order[3]=0X00;
//						Order[4]=0X00;
//						Order[5]=0X02;
//
//						CRC_Value=ModBusCRC16(Order,6); // CRC校验
//						Order[6]= (uint8_t)CRC_Value;
//						Order[7]= (uint8_t)( CRC_Value>>8);
//						GF_BSP_UART_Transmit(1, Order, 8);
//						Motor_Run_Mode_flag=10;
//						break;
//
//					case 10:
//						Order2[0]=0x02;
//                        Order2[1]=0X06;
//						Order2[2]=0X62;
//						Order2[3]=0X00;
//						Order2[4]=0X00;
//						Order2[5]=0X02;
//
//						CRC_Value=ModBusCRC16(Order2,6); // CRC校验
//						Order2[6]= (uint8_t)CRC_Value;
//						Order2[7]= (uint8_t)( CRC_Value>>8);
//						GF_BSP_UART_Transmit(1, Order2, 8);//
//
//	                    Motor_Run_Mode_flag=20;
//						break;
//					case 20:     //速度大小
//						Order[0]=0X01;
//						Order[1]=0X06;
//						Order[2]=0X62;
//						Order[3]=0X03;
//
//						Target_Value=(int16_t )M_LeiSai[LSMotor_Index].Target_Velcity;
//
//						LSMotor_Index=0x01;
//						Order[4]=(uint8_t)(Target_Value>>8);
//						Order[5]=(uint8_t)Target_Value;
//
//
//						CRC_Value=ModBusCRC16(Order,6); // CRC校验
//						Order[6]= (uint8_t)CRC_Value;
//						Order[7]= (uint8_t)( CRC_Value>>8);
//
//						GF_BSP_UART_Transmit(1, Order, 8);
//						Motor_Run_Mode_flag=30;
//						break;
//
//					case 30:
//						Order2[0]=0x02;
//						Order2[1]=0X06;
//						Order2[2]=0X62;
//						Order2[3]=0X03;
//
//						Target_Value=(int16_t )M_LeiSai[LSMotor_Index].Target_Velcity;
//
//						LSMotor_Index=0x00;
//						Order2[4]=(uint8_t)(Target_Value>>8);
//						Order2[5]=(uint8_t)Target_Value;
//
//						CRC_Value=ModBusCRC16(Order2,6); // CRC校验
//						Order2[6]= (uint8_t)CRC_Value;
//						Order2[7]= (uint8_t)( CRC_Value>>8);
//
//						GF_BSP_UART_Transmit(1, Order2, 8);
//
//	                    Motor_Run_Mode_flag=40;
//						break;
//					case 40:     //启动指令0x00, 0x06, 0x60, 0x02, 0x00, 0x10, 0x36, 0x17
//						Order[0]=0X00;
//						Order[1]=0X06;
//						Order[2]=0X60;
//						Order[3]=0X02;
//						Order[4]=0X00;
//						//Order[5]=0X10;
//
//		                if(DC_CAN->for_flag==1||DC_CAN->back_flag==1||DC_CAN->left_flag==1||DC_CAN->right_flag==1||(DC_CAN->Vertical_change_road_up==1)||(DC_CAN->Vertical_change_road_down==1))
//		                {
//						    Order[5]=0X10;
//		                }
//		                else if(DC_CAN->for_flag==0&&DC_CAN->back_flag==0&&DC_CAN->left_flag==0&&DC_CAN->right_flag==0&&(DC_CAN->Vertical_change_road_up==0)&&(DC_CAN->Vertical_change_road_down==0))
//		                {
//								if(isOpen)
//								{
//									a++;
//									GF_BSP_UART_Transmit(1, DO1_OFF, 8);//关
//									if(a>=5)
//									{
//										isOpen = false;//判断作业开启时的是否开关枪，防止作业关闭时无法测试开关枪
//										Order[5]=0X40;
//										a=0;
//									}
//								}
//								if(!isOpen)
//								{
//									Order[5]=0X40;
//								}
//		                }
//
//
//						CRC_Value=ModBusCRC16(Order,6); // CRC校验
//						Order[6]= (uint8_t)CRC_Value;
//						Order[7]= (uint8_t)( CRC_Value>>8);
//						GF_BSP_UART_Transmit(1, Order, 8);
//						Motor_Run_Mode_flag=50;
//						break;
//
//					case 50:
//
//						if(DC_CAN->open==1)//开启
//						{
//
//							if(DC_CAN->working_start==1)//作业开启，能开喷枪
//							{
//								if(!isIn)
//								{
//
//									GF_BSP_UART_Transmit(1, DO1_ON, 8);
//									isOpen = true;
//									isIn = true;
//								}
//							}
//						}
//						else if(DC_CAN->close==1)//关闭,也是开喷抢
//						{
//
//							if(DC_CAN->working_start==1)//作业开启，开喷枪
//							{
//
//								if(isIn)
//								{
//									GF_BSP_UART_Transmit(1, DO1_ON, 8);
//									isOpen = true;
//									isIn = false;
//								}
//
//							}
//						}
//						/*****************/
//
//						if(DC_CAN->test_start==1)//测试开启，在作业关闭时有用
//						{
//							if(DC_CAN->working_stop==1)//作业关闭
//							{
//
//								GF_BSP_UART_Transmit(1, DO1_ON, 8);
//							}
//						}
//						else if(DC_CAN->test_stop==1)//测试关闭，在作业关闭时有用
//						{
//							if(DC_CAN->working_stop==1)//作业关闭
//							{
//								GF_BSP_UART_Transmit(1, DO1_OFF, 8);
//							}
//						}
//
//					Motor_Run_Mode_flag=20;
//						break;
//					default:
//						break;
//
//
//					}
//					break;
//
//
//
//			case 5:
//
//				LSMotor_State=-1;
//				break;
//			default:
//
//				break;
//
//
//
//	}
//	LSMotor_State++;
//
//}
//
//
