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

📄 backup6.c

📁 LWIP在STM32裸机上的移植
💻 C
📖 第 1 页 / 共 2 页
字号:
//backup6.c

//======================= 01-03 =========================//

//[**备份**]
//协议四(0xAD)程序:
/////////////////////////////////////////////////////////////////////////////////////
		//====== 协议四: 每秒5次 ======//
		if(tim_5)
		{			
			for(i=0;i<4;i++)
			{
				cnt = HotFireSet[i];		
				switch(cnt)
				{	
					case (0x1A):
						HotFireSPI[i] = 1;
						break;
					case (0x1B):
						HotFireSPI[i] = 2;
						break;
					case (0x1C):
						HotFireSPI[i] = 3;
						break;
					case (0x1D):
						HotFireSPI[i] = 4;
						break;
					case (0x2A):
						HotFireSPI[i] = 5;
						break;
					case (0x2B):
						HotFireSPI[i] = 6;
						break;
					case (0x2C):
						HotFireSPI[i] = 7;
						break;
					case (0x2D):
						HotFireSPI[i] = 8;
						break;
					case (0x3A):
						HotFireSPI[i] = 9;
						break;
					case (0x3B):
						HotFireSPI[i] = 10;
						break;
					case (0x3C):
						HotFireSPI[i] = 11;
						break;
					case (0x3D):
						HotFireSPI[i] = 12;
						break;
					case (0x4A):
						HotFireSPI[i] = 13;
						break;
					case (0x4B):
						HotFireSPI[i] = 14;
						break;
					case (0x4C):
						HotFireSPI[i] = 15;
						break;
					case (0x4D):
						HotFireSPI[i] = 16;
						break;
					case (0x5A):
						HotFireSPI[i] = 17;
						break;
					case (0x5B):
						HotFireSPI[i] = 18;
						break;
					case (0x5C):
						HotFireSPI[i] = 19;
						break;
					case (0x5D):
						HotFireSPI[i] = 20;
						break;
					default:
						break;
				}
			}
			
			SPI_FLASH_CS_LOW();
			SPI_SendByte(0xAD);
			for(i=0;i<4;i++)
  				RxIOBusState[i] = SPI_SendByte(HotFireSPI[i]);	//4字节热线地址
			RxIOBusState[4] = SPI_SendByte(TalkKeyBK & 0x0F);	//1字节对讲键状态
			if(SyncMode)
				RxIOBusState[5] = SPI_SendByte(SyncMode);//前四路输出总线
			else										 //(播出、热线、辅助、主持人监听)
				RxIOBusState[5] = SPI_SendByte(0x01);	 //默认发送值为1
			RxIOBusState[6] = SPI_SendByte(0x0);		 //后两路输出总线(导播监听、直播室监听)
			SPI_FLASH_CS_HIGH();
			
			tim_5 = 0;
		}

//[**备份**]
//IO信号状态帧程序:
/////////////////////////////////////////////////////////////////////////////////////
		//IO信号状态帧
		if(tim_3)
		{
			TxMessage.StdId = 0x01;			//以广播形式发送
			TxMessage.RTR = CAN_RTR_DATA;
			TxMessage.IDE = CAN_ID_STD;
			TxMessage.DLC = 7;
			for(h=0;h<7;h++)				//5个输入板卡
				TxMessage.Data[h] = RxIOBusState[h];
//			printf("RxIOBusState[5] = 0x%X\n",RxIOBusState[5]);
//			printf("RxIOBusState[6] = 0x%X\n",RxIOBusState[6]);
			while(((CAN2->TSR>>26)& 0x07) == 0);
			CAN_Transmit(CAN2, &TxMessage);	//发送IO信号状态帧

			tim_3 = 0;
		}

//[**备份**]
//场景设置程序:
///////////////////////////////// *** 场景设置 *** //////////////////////////////////////
		if(SceneSetFlag)
		{	
			switch(SceneSetFlag)
			{	
				case (0x01):	//场景一
					I2C_EE_BufferRead(ReadEEPData,EEP_ScenNum1_Address,311);
					break;
				case (0x02):	//场景二
					I2C_EE_BufferRead(ReadEEPData,EEP_ScenNum2_Address,311);
					break;
				case (0x04):	//场景三
					I2C_EE_BufferRead(ReadEEPData,EEP_ScenNum3_Address,311);
					break;
				case (0x08):	//场景四
					I2C_EE_BufferRead(ReadEEPData,EEP_ScenNum4_Address,311);
					break;			
				default:				
					break;				
			}				
			SceneSetFlag = 0;

			//=== 设置推子模块按键状态(场景) ===//
			for(i=0,h=0;i<40;i++)
			{
				ScenKeyState[h] = ReadEEPData[i++];		//按键状态
				ScenEffectState[h] = ReadEEPData[i];	//"设置"键对应的效果
				h++;	
			}	
			TxMessage.RTR = CAN_RTR_DATA;
			TxMessage.IDE = CAN_ID_STD;
			TxMessage.DLC = 4;			
			if(TuiziAddr[0] != 0)
			{
				for(i=0;i<4;i++)
				{	
					TxMessage.Data[i] = ScenKeyState[i];
					KeyDataBK[i] = ScenKeyState[i];
				}
				TxMessage.StdId = 0x101;
				while(((CAN1->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN1, &TxMessage);
			}

			if(TuiziAddr[1] != 0)
			{
				for(i=0;i<4;i++)
				{	
					TxMessage.Data[i] = ScenKeyState[i+4];
					KeyDataBK[i+4] = ScenKeyState[i+4];
				}
				TxMessage.StdId = 0x201;
				while(((CAN1->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN1, &TxMessage);
			}
			
			if(TuiziAddr[2] != 0)
			{
				for(i=0;i<4;i++)
				{	
					TxMessage.Data[i] = ScenKeyState[i+8];
					KeyDataBK[i+8] = ScenKeyState[i+8];
				}
				TxMessage.StdId = 0x301;
				while(((CAN1->TSR>>26)& 0x07) == 0); 
				CAN_Transmit(CAN1, &TxMessage);
			}		 
			
			if(TuiziAddr[3] != 0)
			{
				for(i=0;i<4;i++)
				{
					TxMessage.Data[i] = ScenKeyState[i+12];
					KeyDataBK[i+12] = ScenKeyState[i+12];
				}
				TxMessage.StdId = 0x401;
				while(((CAN1->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN1, &TxMessage);
			}

			if(TuiziAddr[4] != 0)
			{
				for(i=0;i<4;i++)
				{
					TxMessage.Data[i] = ScenKeyState[i+16];
					KeyDataBK[i+16] = ScenKeyState[i+16];
				}
				TxMessage.StdId = 0x501;
				while(((CAN1->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN1, &TxMessage);
			}
			
			//=== 场景"设置"按键对应的效果 ===//

			//=== 设置推子模块状态(场景) ===//	
			h=0;L=0;
			for(i=40;i<280;i++)			//输入通道状态设置数据
			{
				InputState[L][h] = ReadEEPData[i];
				h++;
				if(h%12==0)
				{
					L++;
					h=0;
				}
			}
			TxMessage.RTR = CAN_RTR_DATA;
			TxMessage.IDE = CAN_ID_STD;
			TxMessage.DLC = 8;	
			if(TuiziAddr[0] != 0) 		//地址1推子
			{
				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);
				}
			}
			if(TuiziAddr[1] != 0)		//地址2推子
			{
				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);
				}
			}
			if(TuiziAddr[2] != 0)		//地址3推子
			{
				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);
				}
			}
			if(TuiziAddr[3] != 0)		//地址4推子
			{	
				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);
				}
			}
			if(TuiziAddr[4] != 0)		//地址5推子
			{
				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);
				}
			}
			
			//=== 协议四(0xAD协议)(场景) ===//
			for(h=0,i=280;i<284;i++)	//热线设置数据
			{
				HotFireSet[h] = ReadEEPData[i];
				h++;
			}
			
			//=== 设置输出通道数据(场景) ===//
			for(h=0,i=284;i<304;i++)	//输出通道状态设置数据
			{
				OutputSet[h] = ReadEEPData[i];
				h++;
			}
			TxMessage.RTR = CAN_RTR_DATA;
			TxMessage.IDE = CAN_ID_STD;
			TxMessage.DLC = 4;
			if(OutputAddr[0] != 0)
			{
				for(i=0;i<4;i++)
					TxMessage.Data[i] = OutputSet[i];
				TxMessage.StdId = OutputAddr[0];

⌨️ 快捷键说明

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