📄 backup7.c
字号:
//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(Ð_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 + -