📄 main3.objdump
字号:
void Add_transparences()
{
switch(Add_transparence)
{
case 0 :
if(Add_Bit==1)
{
Add_transparence=1;
Add_transparence_valid=0;
}
else
{
Add_transparence=0;
Add_transparence_valid=0;
}
break;
case 1 :
if(Add_Bit==1)
{
Add_transparence=2;
Add_transparence_valid=0;
}
else
{
Add_transparence=0;
Add_transparence_valid=0;
}
break;
case 2:
if(Add_Bit==1)
{
Add_transparence=3;
Add_transparence_valid=0;
}
else
{
Add_transparence=0;
Add_transparence_valid=0;
}
break;
case 3:
if(Add_Bit==1)
{
Add_transparence=4;
Add_transparence_valid=0;
}
else
{
Add_transparence=0;
Add_transparence_valid=0;
}
break;
case 4:
if(Add_Bit==1)
{
Add_transparence=0;
Add_transparence_valid=1;
}
else
{
Add_transparence=0;
Add_transparence_valid=0;
}
break;
}
}
/**************************************************************************
crc-16校验
***************************************************************************/
unsigned short Cal_Crc(unsigned char *ptr,unsigned int len)
{
unsigned char i;
unsigned short crc=0;
while(len--!=0){
for(i=0x80;i!=0;i/=2){
if((crc&0x8000)!=0){
crc*=2;
crc^=0x1021;
}
else
crc*=2;
if((*ptr&i)!=0)
crc^=0x1021;
}
ptr++;
}
return(crc);
}
/*************************************************************************
**************************************************************************/
void Write_Comm_to_Ram()
{
int i,m;
unsigned char temp;
mark: if(First!=0)
{
if((((*Now_Tail_High)<<8)+(*Now_Tail_Low)+1)==0x7f1)
{
Now_Ram_Write_Add=(unsigned char*)(BASE_ADD+0X80);
Now_Head_Add=0x080;
}
else
{
Now_Ram_Write_Add=(unsigned char*)(BASE_ADD+((*Now_Tail_High)<<8)+(*Now_Tail_Low)+1);
Now_Head_Add=(((unsigned int)(*Now_Tail_High)<<8)+(unsigned int)(*Now_Tail_Low)+1);
}
}
Now_Tail_Add=Now_Head_Add-1;
for(m=0;m<Data_Number-6;m++)
{
if(++Now_Tail_Add==0x7f1)
Now_Tail_Add=0x080;
}
// Now_Tail_Add=(unsigned char*)(((unsigned int)(*Now_Tail_High)<<8)+(unsigned int)(*Now_Tail_Low)+Now_Data_Length+3);
//分别给有效的接收寄存器赋值
Rx_Head_High_test=(unsigned char)((unsigned int)(Now_Head_Add)>>8);
Rx_Head_Low_test=(unsigned char)((unsigned int)(Now_Head_Add) & 0x00ff);
Rx_Tail_High_test=(unsigned char)((unsigned int)(Now_Tail_Add)>>8);
Rx_Tail_Low_test=(unsigned char)((unsigned int)(Now_Tail_Add) & 0x00ff);
*Rx_Head_High[Now_MarkRx_Number]= Rx_Head_High_test;
*Rx_Head_Low[Now_MarkRx_Number]=Rx_Head_Low_test;
*Rx_Tail_High[Now_MarkRx_Number]=Rx_Tail_High_test;
*Rx_Tail_Low[Now_MarkRx_Number]=Rx_Tail_Low_test;
//当前数据存储区的首地址,尾地址
if(*WriteGate1==0 && *WriteGate2==0)
{
*WriteGate1=0;
*WriteGate2=1;
*Now_Tail_High=*Rx_Tail_High[Now_MarkRx_Number];
*Now_Tail_Low=*Rx_Tail_Low[Now_MarkRx_Number];
*WriteGate1=0;
*WriteGate2=0;
}else
{
goto mark;
}
First=1;
for(i=4;i<Data_Number-2;i++)
{
temp=CheckData[i];
*Now_Ram_Write_Add=temp;
Check_Ram_Write();
}
}
/**************************************************************************
串口1的中断服务函数
****************************************************************************/
void ReceiveISRUart1(int context)
{
unsigned int sr;
sr=na_uart1->np_uartstatus;
if(sr & np_uartstatus_rrdy_mask)
{
if(Receive_From==0)
Receive_From=1;
if(uart_use!=na_uart1)
uart_use=na_uart1;
// na_uart1->np_uartcontrol=0; //禁止各种中断
RxBuf[RxHead]=na_uart1->np_uartrxdata; //读出接收寄存器的值//
// na_uart1->np_uarttxdata=RxBuf[RxHead]; //反回串口显示读入的数据
na_uart1->np_uartstatus=0; //清除状态寄存器,从新开始新的发送、接收
// na_uart1->np_uartcontrol=np_uartcontrol_irrdy_mask; //使能开接收中断
if((++RxHead)>(RXBUFSIZE-1)) //检查环形缓冲区是否满
RxHead=0;
}
}
/***************************************************************************
串口2的中断服务函数
****************************************************************************/
/***
void ReceiveISRUart2(int context)
{
unsigned int sr;
sr=na_uart2->np_uartstatus;
if(sr & np_uartstatus_rrdy_mask)
{
if(Receive_From=0)
Receive_From=2;
na_uart2->np_uartcontrol=0; //禁止各种中断
RxBuf[RxHead]=na_uart2->np_uartrxdata; //读出接收寄存器的值
na_uart2->np_uarttxdata=RxBuf[RxHead]; //反回串口显示读入的数据
na_uart2->np_uartstatus=0; //清除状态寄存器,从新开始新的发送、接收
na_uart2->np_uartcontrol=np_uartcontrol_irrdy_mask; //使能开接收中断
if((++RxHead)>(RXBUFSIZE-1)) //检查环形缓冲区是否满
RxHead=0;
}
}
***/
/******************************************************************************
判断发送标志位,由此决定是返回0,还是1
*******************************************************************************/
int Check_Tx_Mark_Bit()
{
int i;
unsigned char* Now_Read_Tail;
Now_Ram_Read_Add=(unsigned char*)((unsigned int)BASE_ADD+(unsigned int)((*(Tx_Head_High[Transmit_Number]))<<8)+(unsigned int)(*(Tx_Head_Low[Transmit_Number])));
if(*Now_Ram_Read_Add==0xFD)
return 1;
else
if(*Now_Ram_Read_Add==0x94 ||*Now_Ram_Read_Add==0x95 ||*Now_Ram_Read_Add==0x96 ||
*Now_Ram_Read_Add==0x98 ||*Now_Ram_Read_Add==0x99)
{
i=4;
Now_Read_Tail=(unsigned char*)((unsigned int)BASE_ADD+(unsigned int)((*Tx_Tail_High[Transmit_Number])<<8)+(unsigned int)(*Tx_Tail_Low[Transmit_Number]));
while(Now_Ram_Read_Add++<=Now_Read_Tail)
{
CheckData[i++]=*Now_Ram_Read_Add;
Check_Ram_Read();
}
return 3;
}
else
if(*Now_Ram_Read_Add==0xc2)
return 4;
else
return 2;
}
/*******************************************************************************
特征参数的处理
********************************************************************************/
void Handle_Para()
{
int i;
Now_Ram_Read_Add=(unsigned char*)((unsigned int)BASE_ADD+(unsigned int)
((*Tx_Head_High[Transmit_Number])<<8)+(unsigned int)(*Tx_Head_Low[Transmit_Number]));
for(i=0; i<14; i++)
{
if(i==12)
Parameter[0]=*Now_Ram_Read_Add;
if(i==13)
Parameter[1]=*Now_Ram_Read_Add;
if(i==0)
Test_Package_Data[i]=0xf1;
else
Test_Package_Data[i]=*Now_Ram_Read_Add;
Check_Ram_Read();
}
}
/*******************************************************************************
把方案信息写进ram
********************************************************************************/
void Write_Ram()
{
}
/*****************************************************************************
往FLASH写流量、故障信息
******************************************************************************/
void Write_Flash_Flow()
{
int flag;
unsigned short temp=0;
Now_Ram_Read_Add=(unsigned char*)((unsigned int)BASE_ADD+(unsigned int)
((*Tx_Head_High[Transmit_Number])<<8)+(unsigned int)(*Tx_Head_Low[Transmit_Number]));
Now_Ram_Read_End_Add=(unsigned char*)((unsigned int)BASE_ADD+(unsigned int)
((*Tx_Tail_High[Transmit_Number])<<8)+(unsigned int)(*Tx_Tail_Low[Transmit_Number]));
do
{
if((unsigned long)Now_Flow_Information_Add*16384==0 && Flash_Bit==0)
{
flag=nr_flash_erase_sector_4kB((unsigned short*)na_cfi_flash_0_base,Now_Flow_Information_Add);
}
if(Flash_Bit%2==0)
{
temp=(unsigned short)(*Now_Ram_Read_Add);
Check_Ram_Read();
Flash_Bit=1;
}
else
{
temp=(unsigned short)(temp+(*Now_Ram_Read_Add<<8));
Check_Ram_Read();
flag = nr_flash_write((unsigned short)na_cfi_flash_0_base,Now_Flow_Information_Add,temp);
Flash_Bit=0;
if(++Now_Flow_Information_Add==Flow_Information_End)
Now_Flow_Information_Add=Flow_Information_Base;
}
}
while(Now_Ram_Read_Add==Now_Ram_Read_End_Add);
}
/*****************************************************************************
往FLASH写方案信息
******************************************************************************/
void Write_Flash()
{
int i;
int flag;
unsigned short base_temp1;
unsigned short base_temp2;
unsigned short temp_data;
if((*(Conf_Phase1_Address_Flash+4500))==0x00 && (*(Conf_Phase1_Address_Backup+4500))==0xffff)
{
flag=nr_flash_erase_sector_4kB((unsigned short*)na_cfi_flash_0_base,(unsigned short*)FLASH_BASE_ADD_bake);
if(*(Conf_Phase1_Address_Backup+4500)!=0x00)
nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash+4500,0x00);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash,Conf_Phase1_Address_Backup,144);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase2_Address_Flash,Conf_Phase2_Address_Backup,144);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash,Conf_Stage_Address_Backup,1568);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash,Conf_Daydesign_Address_Backup,1184);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesigntable_Address_Flash,Conf_Daydesigntable_Address_Backup,30);
}
if(CheckData[4]==0x95)
{
flag=nr_flash_erase_sector_4kB((unsigned short*)na_cfi_flash_0_base,(unsigned short*)FLASH_BASE_ADD);
for(i=0; i<98; i++)
{
Conf_Stage_Address_Buffer[i]=CheckData[5+i];
}
if(CheckData[5]==1)
{
base_temp1=98;
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash,(void*)&Conf_Stage_Address_Buffer[0],49);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash+base_temp1,Conf_Stage_Address_Backup+base_temp1,1219);
}
else
if(CheckData[5]==32)
{
base_temp1=98*31;
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash+base_temp1,(void*)&Conf_Stage_Address_Buffer[0],49);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash,Conf_Stage_Address_Backup,1219);
}
else
{
base_temp1=98*(CheckData[5]-1);
base_temp2=98+base_temp1;
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash+base_temp1/2,(void*)&Conf_Stage_Address_Buffer[0],49);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash,Conf_Stage_Address_Backup,(int)base_temp1/2);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Stage_Address_Flash+base_temp2/2,Conf_Stage_Address_Backup+base_temp2/2,(3136-(int)base_temp2)/2);
}
if(*(Conf_Phase1_Address_Backup+4500)!=0x00)
nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash+4480,0x00);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Phase1_Address_Flash,Conf_Phase1_Address_Backup,288);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash,Conf_Controlstage_Address_Backup,640);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesign_Address_Flash,Conf_Daydesign_Address_Backup,1184);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Daydesigntable_Address_Flash,Conf_Daydesigntable_Address_Backup,30);
}
if(CheckData[4]==0x96)
{
flag=nr_flash_erase_sector_4kB((unsigned short*)na_cfi_flash_0_base,(unsigned short*)FLASH_BASE_ADD);
for(i=0; i<41; i++)
{
Conf_Controlstage_Address_Buffer[i]=CheckData[5+i];
}
if(CheckData[5]==1)
{
base_temp1=40;
temp_data=(Conf_Controlstage_Address_Buffer[40])+((*(Conf_Controlstage_Address_Backup+base_temp1/2)&& 0x00ff)<<8);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash,(void*)&Conf_Controlstage_Address_Buffer[0],20);
nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp1/2,temp_data);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,(Conf_Controlstage_Address_Flash+(base_temp1/2)),Conf_Controlstage_Address_Backup+base_temp1/2+1,620);
}
else
if(CheckData[5]==32)
{
base_temp1=41*31-1;
temp_data=((*Conf_Controlstage_Address_Backup+base_temp1/2)<<8)+(Conf_Controlstage_Address_Buffer[0]& 0x00ff);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp1/2,(void*)&Conf_Controlstage_Address_Buffer[1],20);
nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp1/2,temp_data);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash,Conf_Controlstage_Address_Backup,620);
}
else
{
if(CheckData[5]%2==1)
{
base_temp1=41*(CheckData[5]-1);
base_temp2=40+base_temp1;
temp_data=(Conf_Controlstage_Address_Buffer[40])+((*(Conf_Controlstage_Address_Backup+base_temp2/2)& 0x00ff)<<8);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp1/2,(void*)&Conf_Controlstage_Address_Buffer[0],20);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash,Conf_Controlstage_Address_Backup,base_temp1/2);
nr_flash_write((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp2/2,temp_data);
nr_flash_write_buffer((unsigned short*)na_cfi_flash_0_base,Conf_Controlstage_Address_Flash+base_temp2/2+1,Conf_Controlstage_Address_Backup+base_temp2/2+1,(1312-(int)base_temp2)/2-1);
}
else
{
base_temp1=41*(CheckData[5]-1);
base_temp2=41+base_temp1;
temp_data=(*(Conf_Controlstage_Address_Backup+base_temp1/2)& 0x00ff)+((Conf_Controlstage_Address_Buffer[0]& 0x00ff)<<8);
for(i=0; i<20; i++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -