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

📄 backup6.c

📁 LWIP在STM32裸机上的移植
💻 C
📖 第 1 页 / 共 2 页
字号:
				while(((CAN2->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN2, &TxMessage);
			}
			if(OutputAddr[1] != 0)
			{
				for(i=0;i<4;i++)
					TxMessage.Data[i] = OutputSet[i+4];
				TxMessage.StdId = OutputAddr[1];
				while(((CAN2->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN2, &TxMessage);
			}
			if(OutputAddr[2] != 0)
			{
				for(i=0;i<4;i++)
					TxMessage.Data[i] = OutputSet[i+8];
				TxMessage.StdId = OutputAddr[2];
				while(((CAN2->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN2, &TxMessage);
			}
			if(OutputAddr[3] != 0)
			{
				for(i=0;i<4;i++)
					TxMessage.Data[i] = OutputSet[i+12];
				TxMessage.StdId = OutputAddr[3];
				while(((CAN2->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN2, &TxMessage);
			}
			if(OutputAddr[4] != 0)
			{
				for(i=0;i<4;i++)
					TxMessage.Data[i] = OutputSet[i+16];
				TxMessage.StdId = OutputAddr[4];
				while(((CAN2->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN2, &TxMessage);
			}

			h=0;
			for(i=304;i<311;i++)		//输出通道增益设置数据
			{
				OutputGainSet[h] = ReadEEPData[i];
				h++;
			}
			SyncMode = ReadEEPData[310];	//同步模式
		}
			
/////////////////////////////// *** 恢复临时场景 *** ////////////////////////////////////
		if(SceneDelFlag)
		{
			SceneDelFlag = 0;
			I2C_EE_BufferRead(TempKeyState,EEP_TempKeyState_Address,20);//读取上一时刻按键状态
			I2C_EE_BufferRead(ReadEEPData,EEP_TempScene_Address,271);	//读取临时状态
			h = 0;
			L = 0;
			for(i=0;i<240;i++)			//输入通道状态设置数据
			{
				InputState[L][h] = ReadEEPData[i];
				h++;
				if(h%12==0)
				{
					L++;
					h=0;
				}
			}
				
			if(TuiziAddr[0] != 0) 		//地址1推子
			{	
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 8;
				TxMessage.StdId = TuiziAddr[0];
				for(i=0;i<4;i++)
				{
					TxMessage.Data[0] = (InputState[i][7]<<4)|(i+1); //高4位信号格式,低4位数据包编号
					TxMessage.Data[1] = InputState[i][8];			 //输入模块地址
					for(h=2;h<8;h++)
						TxMessage.Data[h] = InputState[i][h-1];		 //6字节汉字码
					while(((CAN1->TSR>>26)& 0x07) == 0);
					CAN_Transmit(CAN1, &TxMessage);
				}
				//=== 初始化上一时刻按键状态 ===//
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 4;	
				TxMessage.StdId = 0x101;
				for(i=0;i<4;i++)
				{
					TxMessage.Data[i] = TempKeyState[i];				
					KeyDataBK[i] = TempKeyState[i];					
				}
				while(((CAN1->TSR>>26)& 0x07) == 0);					
				CAN_Transmit(CAN1, &TxMessage);
			}

			if(TuiziAddr[1] != 0)		//地址2推子
			{
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 8;
				TxMessage.StdId = TuiziAddr[1];
				for(i=4;i<8;i++)
				{
					TxMessage.Data[0] = (InputState[i][7]<<4)|(i-3); //高4位信号格式,低4位数据包编号
					TxMessage.Data[1] = InputState[i][8];
					for(h=2;h<8;h++)
						TxMessage.Data[h] = InputState[i][h-1];
					while(((CAN1->TSR>>26)& 0x07) == 0);
					CAN_Transmit(CAN1, &TxMessage);
				}
				//=== 初始化上一时刻按键状态 ===//
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 4;	
				TxMessage.StdId = 0x201;
				for(h=0,i=4;i<8;i++)
				{
					TxMessage.Data[h++] = TempKeyState[i];				
					KeyDataBK[i] = TempKeyState[i];					
				}
				while(((CAN1->TSR>>26)& 0x07) == 0);					
				CAN_Transmit(CAN1, &TxMessage);
			}

			if(TuiziAddr[2] != 0)		//地址3推子
			{
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 8;
				TxMessage.StdId = TuiziAddr[2];
				for(i=8;i<12;i++)
				{
					TxMessage.Data[0] = (InputState[i][7]<<4)|(i-7); //高4位信号格式,低4位数据包编号
					TxMessage.Data[1] = InputState[i][8];
					for(h=2;h<8;h++)
						TxMessage.Data[h] = InputState[i][h-1];
					while(((CAN1->TSR>>26)& 0x07) == 0);
					CAN_Transmit(CAN1, &TxMessage);
				}
				//=== 初始化上一时刻按键状态 ===//
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 4;	
				TxMessage.StdId = 0x301;
				for(h=0,i=8;i<12;i++)
				{
					TxMessage.Data[h++] = TempKeyState[i];				
					KeyDataBK[i] = TempKeyState[i];					
				}
				while(((CAN1->TSR>>26)& 0x07) == 0);					
				CAN_Transmit(CAN1, &TxMessage);
			}

			if(TuiziAddr[3] != 0)		//地址4推子
			{
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 8;	
				TxMessage.StdId = TuiziAddr[3];
				for(i=12;i<16;i++)
				{
					TxMessage.Data[0] = (InputState[i][7]<<4)|(i-11); //高4位信号格式,低4位数据包编号
					TxMessage.Data[1] = InputState[i][8];
					for(h=2;h<8;h++)
						TxMessage.Data[h] = InputState[i][h-1];
					while(((CAN1->TSR>>26)& 0x07) == 0);
					CAN_Transmit(CAN1, &TxMessage);
				}
				//=== 初始化上一时刻按键状态 ===//
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 4;	
				TxMessage.StdId = 0x401;
				for(h=0,i=12;i<16;i++)
				{
					TxMessage.Data[h++] = TempKeyState[i];				
					KeyDataBK[i] = TempKeyState[i];					
				}
				while(((CAN1->TSR>>26)& 0x07) == 0);					
				CAN_Transmit(CAN1, &TxMessage);
			}

			if(TuiziAddr[4] != 0)		//地址5推子
			{
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 8;
				TxMessage.StdId = TuiziAddr[4];
				for(i=16;i<20;i++)
				{
					TxMessage.Data[0] = (InputState[i][7]<<4)|(i-15); //高4位信号格式,低4位数据包编号
					TxMessage.Data[1] = InputState[i][8];
					for(h=2;h<8;h++)
						TxMessage.Data[h] = InputState[i][h-1];
					while(((CAN1->TSR>>26)& 0x07) == 0);
					CAN_Transmit(CAN1, &TxMessage);
				}
				//=== 初始化上一时刻按键状态 ===//
				TxMessage.RTR = CAN_RTR_DATA;
				TxMessage.IDE = CAN_ID_STD;
				TxMessage.DLC = 4;	
				TxMessage.StdId = 0x501;
				for(h=0,i=16;i<20;i++)
				{
					TxMessage.Data[h++] = TempKeyState[i];				
					KeyDataBK[i] = TempKeyState[i];					
				}
				while(((CAN1->TSR>>26)& 0x07) == 0);					
				CAN_Transmit(CAN1, &TxMessage);
			}

			for(h=0,i=240;i<244;i++)
				HotFireSet[h++] = ReadEEPData[i];
						
			for(h=0,i=244;i<264;i++)
				OutputSet[h++] = ReadEEPData[i];
		
			for(h=0,i=264;i<271;i++)
				OutputGainSet[h++] = ReadEEPData[i];//(OutputGainSet[6]为一个字节SyncMode)
			SyncMode = OutputGainSet[6];		
		}
/////////////////////////////////////////////////////////////////////////////////////////

//原来场景程序:
///////////////////////////////// ***场景*** ///////////////////////////////////////

u8 ScenInputState[20][12] = {0};//场景设置中的输入状态
u8 ScenHotFireSet[4] = {0};		//场景设置中的热线地址
u8 ScenOutputSet[20] = {0};		//场景设置中的输出通道设置
u8 ScenOutputGainSet[7] = {0};	//场景设置中的输出通道增益设置(还包含一个字节SyncMode)
u8 ScenSyncMode = 0;			//场景设置中的同步模式

extern u8 ScenKeyState[20];		//场景设置中的按键状态
extern u8 ScenEffectState[20];	//场景设置中"设置"按键对应的效果
extern u8 ScenInputState[20][12];//场景设置中的输入状态
extern u8 ScenHotFireSet[4];	//场景设置中的热线地址
extern u8 ScenOutputSet[20];	//场景设置中的输出通道设置
extern u8 ScenOutputGainSet[7];	//场景设置中的输出通道增益设置(还包含一个字节SyncMode)
extern u8 ScenSyncMode;			//场景设置中的同步模式 

				for(j=0,k=0;j<40;j++)
				{
					ScenKeyState[k] = revdata[j++];		//按键状态
					ScenEffectState[k] = revdata[j];	//"设置"键对应的效果
					k++;	
				}
				
				u=0;k=0;
				for(j=40;j<280;j++)			//输入通道状态设置数据
				{
					ScenInputState[k][u] = revdata[j];
					u++;
					if(u%12==0)
					{
						k++;
						u=0;
					}
				}
				
				u=0;
				for(j=280;j<284;j++)		//热线设置数据
				{
					ScenHotFireSet[u] = revdata[j];
					u++;
				}

				u=0;
				for(j=284;j<304;j++)		//输出通道状态设置数据
				{
					ScenOutputSet[u] = revdata[j];
					u++;
				}

				u=0;
				for(j=304;j<311;j++)		//输出通道增益设置数据
				{
					ScenOutputGainSet[u] = revdata[j];
					u++;
				}
				ScenSyncMode = revdata[310];	//同步模式

///////////////////////////////////////////////////////////////////////////////

//原来临时场景程序:
///////////////////////////////////////////////////////////////////////////////

//	printf("\nThe InputState data : \n");
	I2C_EE_BufferRead(ReadEEPData,EEP_InputState_Address,240);
	h = 0;
	L = 0;
	for(i=0;i<240;i++)			//输入通道状态设置数据
	{
		InputState[L][h] = ReadEEPData[i];
		h++;
		if(h%12==0)
		{
			L++;
			h=0;
		}
	}

	I2C_EE_BufferRead(ReadEEPData,EEP_HotFire_Address,4);
	for(i=0;i<4;i++)
		HotFireSet[i] = ReadEEPData[i];
				
	I2C_EE_BufferRead(ReadEEPData,EEP_OutputSet_Address,20);
	for(i=0;i<20;i++)
		OutputSet[i] = ReadEEPData[i];

	I2C_EE_BufferRead(ReadEEPData,EEP_OutputGain_Address,7);
	for(i=0;i<7;i++)
		OutputGainSet[i] = ReadEEPData[i];	//(OutputGainSet[6]为一个字节SyncMode)
	SyncMode = OutputGainSet[6];

⌨️ 快捷键说明

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