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

📄 backup7.c

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

//======================= 01-08 =========================//
u8 tim_2 = 0;		//每秒2次
u8 tim_10 = 0;		//每秒10次
u8 tim_15 = 0;		//每秒15次
u8 tim_20 = 0;		//每秒20次

extern u8 tim_2;
extern u8 tim_10;
extern u8 tim_15;
extern u8 tim_20;

		if(tim_cnt%50  == 0) tim_20 = 1;
		if(tim_cnt%60  == 0) tim_15 = 1;
		if(tim_cnt%100 == 0) tim_10 = 1;
		if(tim_cnt%500 == 0) tim_2  = 1;

//[**备份**]
///////////////////////// *** 初始化时加幻相电压 *** //////////////////////////
		//加幻相电压
		for(L=0;L<5;L++)
			for(i=0;i<4;i++)
				AddVoltage[L][i] = 0;	//清零
							
		for(i=0;i<20;i++)
		{	
			if((InputState[i][7] & 0x0F)== 0x03)  //与推子模块绑定的是否是话筒输入板
			{	
				L = ((InputState[i][8]>>4)& 0x0F)-0x01;
				h = (InputState[i][8]& 0x0F)-0x0A;
					
				if((InputState[i][10]& 0x0F)== 0x01)  //加幻相电压
				{							
					AddVoltage[L][h] = 1;
				}	
				else								  //不加幻相电压	
					AddVoltage[L][h] = 0;					
			}
		}


//======================= 01-11 =========================//

u8  KeyClear = 1;				//清除没有EEPROM中的推子模块的按键保存

u8 Cmd71_ScenSetFlg = 0;		//当使用四个场景时,设置临时场景
extern u8 Cmd71_ScenSetFlg;		//当使用四个场景时,设置临时场景

			for(i=0;i<20;i++)
			{
				KeyDataBK[i] = TempKeyState[i];
				printf("KeyDataBK[%d] = 0x%X\n",i,KeyDataBK[i]);
			}

			//当正在使用四个场景时,设置临时场景
			if(Cmd71_ScenSetFlg)
			{
				for(i=0;i<20;i++)
				{
					if(((TempKeyState[i]>>3)& 0x01) == 0x01) //"设置"键是否有效
					{
						if(InputState[i][7] != 0x03)  //与推子模块绑定的是否是话筒输入板
							TempKeyState[i] &= ~(1<<3);
					}
				}
				Cmd71_ScenSetFlg = 0;
			}

u8 tim_50 = 0;
extern u8 tim_50;

		if(tim_cnt%20  == 0) tim_50 = 1;

//		if(tim_50)
//		{
//			//"主页界面显示"
//			if(((FaceKeySet>>4)& 0x01) == 0x01)
//			{
//				TxMessage.RTR = CAN_RTR_DATA;
//				TxMessage.IDE = CAN_ID_STD;
//				TxMessage.DLC = 4;
//				TxMessage.StdId = 0x02B;
//				TxMessage.Data[0] = RxOutdBData[0]-24;	//播出dBFS
//				TxMessage.Data[1] = RxOutdBData[1]-24;	
//				TxMessage.Data[2] = RxOutdBData[6]-24;	//主持人监听dBFS
//				TxMessage.Data[3] = RxOutdBData[7]-24;
//				while(((CAN1->TSR>>26)& 0x07) == 0);
//				CAN_Transmit(CAN1, &TxMessage);
//			}
//
//			tim_50 = 0;
//		}


//======================= 01-12 =========================//

u8 ETH_InitFlag = 0;
extern u8 ETH_InitFlag;

		if(ETH_InitFlag)
		{
			ETH_InitFlag++;
			if(ETH_InitFlag>250)
			{			
				Ethernet_Configuration();	
			}			
		}

	if(ETH_Init(&ETH_InitStructure, PHY_ADDRESS))
	{
		ETH_InitFlag = 0;
		GPIOE->BSRR |= GPIO_Pin_14;			//LED不亮(网络初始化正常)
	}
	else
	{	
		ETH_InitFlag = 1;
	  	GPIOE->BRR |= GPIO_Pin_14;			//LED亮(初始化错误)
	}

//			printf("(1). 0x%X  (4). 0x%X\n",OutputGain[1],OutputGain[4]);

			printf("SceneSetFlag = 0x%X\n",SceneSetFlag);
				printf("ScenKeyState[%d] = 0x%X\n",h,ScenKeyState[h]);


//		printf("\nInputState[%d][8] = 0x%X\n",i,InputState[i][8]);
//		printf("\nHotFireClear = %d\n\n",HotFireClear);
	
u8 ScenKeyState[20] = {0};		//场景设置中的按键状态
//					ScenKeyState[h] = ReadEEPData[i++];		//按键状态

printf("InputState[%d][%d] = 0x%X\n",L,h,InputState[L][h]);
if(InputState[L][h] != 0xF0)
	printf("InputState[%d][%d] = 0x%X\n",L,h,InputState[L][h]);

				for(i=0;i<20;i++){
					KeyDataBK[i] = TempKeyState[i];
					printf("KeyDataBK[%d] = 0x%X\n",i,KeyDataBK[i]);
				}

				for(i=0;i<20;i++)
					printf("TempKeyState[%d] = 0x%X\n",i,TempKeyState[i]);

//					printf("(5).The AddVoltage = 0x%X\n",TxMessage.Data[0]);
//					printf("(4).The AddVoltage = 0x%X\n",TxMessage.Data[0]);
//					printf("(3).The AddVoltage = 0x%X\n",TxMessage.Data[0]);
//					printf("(2).The AddVoltage = 0x%X\n",TxMessage.Data[0]);
//					printf("(1).The AddVoltage = 0x%X\n",TxMessage.Data[0]);
//						printf("AddVoltage[%d][%d] = 0x%X\n",u,k,AddVoltage[u][k]);

//						printf("OutputSet[%d] = 0x%X\n",j,OutputSet[j]);
//						printf("OutputSet[%d] = 0x%X\n",j+4,OutputSet[j+4]);
//						printf("OutputSet[%d] = 0x%X\n",j+8,OutputSet[j+8]);
//						printf("OutputSet[%d] = 0x%X\n",j+12,OutputSet[j+12]);
//						printf("OutputSet[%d] = 0x%X\n",j+16,OutputSet[j+16]);
//======================= 01-15 =========================//

//[**备份**]
//场景设置程序
///////////////////////////////// *** 场景设置 *** //////////////////////////////////////

		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;
			KeySetDataBK = 0;
			
			////////////////////////////////////////////////////
			//按下"场景"键,临时场景中"设置"键对应的"效果"键无效
			if(EfctKeyBK)EfctKeyBK = 0;
			TxMessage.RTR = CAN_RTR_DATA;
			TxMessage.IDE = CAN_ID_STD;
			TxMessage.DLC = 4;
			TxMessage.StdId = 0x011;
			TxMessage.Data[0] = FaceKeyBK;	//默认"主页"按键有效
			TxMessage.Data[1] = EfctKeyBK;	
			TxMessage.Data[2] = ScenKeyBK;
			TxMessage.Data[3] = TalkKeyBK;
			while(((CAN1->TSR>>26)& 0x07) == 0);
			CAN_Transmit(CAN1, &TxMessage);
			////////////////////////////////////////////////////

			//=== 推子模块按键状态(场景) ===//
			for(i=0,h=0;i<40;i++)
			{
				ScenKeyState[h] = ReadEEPData[i++];		//按键状态
				ScenEffectState[h] = ReadEEPData[i];	//"设置"键对应的效果
				h++;	
			}

			//=== 推子模块状态(场景) ===//
			h=0;L=0;
			for(i=40;i<280;i++)			//输入通道状态设置数据
			{
				InputState[L][h] = ReadEEPData[i];
				h++;
				if(h%12==0)
				{
					L++;
					h=0;
				}
			}

			//=== 协议四(0xAD协议)(场景) ===//
			for(h=0,i=280;i<284;i++)	//热线设置数据
			{
				HotFireSet[h] = ReadEEPData[i];
				h++;
			}
			
			if(HotFireSet[2])	//处理"热线"按键
			{	
				for(i=0;i<20;i++)	
					if(HotFireSet[2] == InputState[i][8])break;	//查找"热线"对应哪一路推子模块
			
				HotFireClear = (((InputState[i][0]>>4)& 0x0F)-1)*4 + ((InputState[i][0]& 0x0F)-0x0A); 	
			}
			else
				HotFireClear = 0xFF;
			
			//=== 刷新场景按键 ===//	
			TxMessage.RTR = CAN_RTR_DATA;
			TxMessage.IDE = CAN_ID_STD;
			TxMessage.DLC = 4;			
			if(TuiziAddr[0] != 0)
			{
				for(i=0;i<4;i++)
				{
					if(InputState[i][7] != 0x03)
						ScenKeyState[i] &= ~(1<<3);
					if(HotFireClear == i)
						ScenKeyState[i] &= ~(1<<1);	
					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(h=0,i=4;i<8;i++)
				{
					if(InputState[i][7] != 0x03)
						ScenKeyState[i] &= ~(1<<3);
					if(HotFireClear == i)
						ScenKeyState[i] &= ~(1<<1);	
					TxMessage.Data[h++] = ScenKeyState[i];
					KeyDataBK[i] = ScenKeyState[i];
				}
				TxMessage.StdId = 0x201;
				while(((CAN1->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN1, &TxMessage);
			}
			
			if(TuiziAddr[2] != 0)
			{
				for(h=0,i=8;i<12;i++)
				{	
					if(InputState[i][7] != 0x03)
						ScenKeyState[i] &= ~(1<<3);
					if(HotFireClear == i)
						ScenKeyState[i] &= ~(1<<1);	
					TxMessage.Data[h++] = ScenKeyState[i];
					KeyDataBK[i] = ScenKeyState[i];
				}
				TxMessage.StdId = 0x301;
				while(((CAN1->TSR>>26)& 0x07) == 0); 
				CAN_Transmit(CAN1, &TxMessage);
			}		 
			
			if(TuiziAddr[3] != 0)
			{
				for(h=0,i=12;i<16;i++)
				{
					if(InputState[i][7] != 0x03)
						ScenKeyState[i] &= ~(1<<3);
					if(HotFireClear == i)
						ScenKeyState[i] &= ~(1<<1);
					TxMessage.Data[h++] = ScenKeyState[i];
					KeyDataBK[i] = ScenKeyState[i];
				}
				TxMessage.StdId = 0x401;
				while(((CAN1->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN1, &TxMessage);
			}

			if(TuiziAddr[4] != 0)
			{
				for(h=0,i=16;i<20;i++)
				{
					if(InputState[i][7] != 0x03)
						ScenKeyState[i] &= ~(1<<3);
					if(HotFireClear == i)
						ScenKeyState[i] &= ~(1<<1);
					TxMessage.Data[h++] = ScenKeyState[i];
					KeyDataBK[i] = ScenKeyState[i];
				}
				TxMessage.StdId = 0x501;
				while(((CAN1->TSR>>26)& 0x07) == 0);
				CAN_Transmit(CAN1, &TxMessage);
			}

⌨️ 快捷键说明

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