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

📄 syntest.c

📁 sl811hs 的驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
				uartsend("\n\r");
			}
			uartsend("\tECHOCNT=");
			ltoa(timelist[timelist_i],data,10);
			uartsend(data);	
		}
		nowtest++;
		uartsend("\n\r#测试4:勤务帧超时中断测试");
		uartsend("\n\r        测试方法:提前3个数据帧将P1取反。\n\r");
		uartsend("\n\r        '>'表示多种中断发生。\n\r");
		
		timelist_i=0;
		
		//SYN_ADDR_TXDSTATEWRB=0x100000;
		nowstate=0;
		nowtosend=16;
		timelist_i=0;
		cmp=0x0;
		SYN_ADDR_TXDCNTCMP=0x34000000;
		
	}	

}

void qwerror(B32 temp3)
{
	if(nowstate==193)						//下一帧发送勤务帧
	{
		rIOPDATA=rIOPDATA^0xf2;
	}
	if(nowstate==0)						//勤务帧发送完毕后的下一帧
	{
		timelist[timelist_i]=temp3;
		timelist_i++;
	}
	if(timelist_i==30)
	{
		SYN_ADDR_TXDCNTCMP=0x0;			//暂停定时中断,输出数据;
		for(timelist_i=0;timelist_i<30;timelist_i++)
		{
			if(timelist_i%10==0)
			{
				uartsend("\n\r");
			}
			uartsend("\tINTSTATE=");
			ltoa(timelist[timelist_i],data,2);
			uartsend(data);	
		}
		nowtest++;
		uartsend("\n\r#测试5:ECHO超时测试");
		uartsend("\n\r        测试方法:更改本机地址。\n\r");
		uartsend("\n\r        '&'表示ECHO超时中断发生。\n\r");
		SYN_ADDR_ECHOADDR=0x1;
		timelist_i=0;
		
		//SYN_ADDR_TXDSTATEWRB=0x100000;
		nowstate=0;
		nowtosend=16;
		timelist_i=0;
		cmp=0x0;
		SYN_ADDR_TXDCNTCMP=0x34000000;
		
	}	
}

void echoerror(B32 temp3)
{
	B32 *point;
	if(nowstate==3)						//勤务帧发送完毕后的下一帧
	{
		
		timelist_i++;
	}
	if(timelist_i==30)
	{
		SYN_ADDR_TXDCNTCMP=0x0;			//暂停定时中断,输出数据;
		
		nowtest++;
		uartsend("\n\r#测试6:p帧错误中断测试");
		uartsend("\n\r        测试方法:置p3帧为错误数据。\n\r");
		uartsend("\n\r        '='表示接收到p帧校验错误中断发生。\n\r");
		
		point=&SYN_ADDR_TP3;				//P3
   		uartsend("\n\r@ 0x");
    	ltoa((int)point,data,16);
   		uartsend(data);
    	*point=0x03287;
    	ltoa(0x03287,data,16);
    	uartsend(" 0x");
    	uartsend(data);
		uartsend("\n\r");
		
		SYN_ADDR_ECHOADDR=0x0;
		
		timelist_i=0;
		
		//SYN_ADDR_TXDSTATEWRB=0x100000;
		nowstate=0;
		nowtosend=16;
		timelist_i=0;
		cmp=0x0;
		SYN_ADDR_TXDCNTCMP=0x34000000;
		
	}	

}

void perror(B32 temp3)
{
	B32 *point;
	if(nowstate==2)						//勤务帧发送完毕后的下一帧
	{
		//timelist[timelist_i]=temp3;
		timelist_i++;
	}
	if(timelist_i==30)
	{
		SYN_ADDR_TXDCNTCMP=0x0;			//暂停定时中断,输出数据;
		
		nowtest++;
		uartsend("\n\r#测试7:接收到两个p帧中断测试");
		uartsend("\n\r        测试方法:置p2帧为正确数据。将p3帧数据清零\n\r");
		uartsend("\n\r        '+'表示接收到两个或两个以上的p帧中断发生。\n\r");
		
		point=&SYN_ADDR_TP2;				//P2
   		uartsend("\n\r@ 0x");
    	ltoa((int)point,data,16);
    	uartsend(data);
    	*point=0x13287;
    	ltoa(0x13287,data,16);
    	uartsend(" 0x");
    	uartsend(data);
    
		point=&SYN_ADDR_TP3;				//P3
   		uartsend("\n\r@ 0x");
    	ltoa((int)point,data,16);
   		uartsend(data);
    	*point=0x0;
    	ltoa(0x0,data,16);
    	uartsend(" 0x");
    	uartsend(data);
    	uartsend("\n\r");
		
		timelist_i=0;
		
		//SYN_ADDR_TXDSTATEWRB=0x100000;
		nowstate=0;
		nowtosend=16;
		timelist_i=0;
		cmp=0x0;
		SYN_ADDR_TXDCNTCMP=0x34000000;
		
	}	

}

void pint(B32 temp3)
{
	B32 *point;
	if(nowstate==2)						//勤务帧发送完毕后的下一帧
	{
		timelist_i++;
	}
	if(timelist_i==30)
	{
		SYN_ADDR_TXDCNTCMP=0x0;			//暂停定时中断,输出数据;
				
		nowtest++;
		uartsend("\n\r#测试8:在未同步的情况下发送报告帧测试");
		uartsend("\n\r        注意:此处无法测试,请调用另一个程序测试,使用示波器观察\n\r");
		
		uartsend("\n\r#测试9:状态字寄存器测试");
		uartsend("\n\r");
		
		
		point=&SYN_ADDR_TP2;				//P2
   		uartsend("\n\r@ 0x");
    	ltoa((int)point,data,16);
    	uartsend(data);
    	*point=0x0;
    	ltoa(0x0,data,16);
    	uartsend(" 0x");
    	uartsend(data);
    	uartsend("\n\r");
    	    
		timelist_i=0;
		
		//SYN_ADDR_TXDSTATEWRB=0x100000;
		nowstate=0;
		nowtosend=16;
		timelist_i=0;
		cmp=0x0;
		SYN_ADDR_TXDCNTCMP=0x34000000;
		
	}	

}



void statetest(B32 temp3)
{
	B32 *point;
	B32 i;
	timelist[timelist_i]=nowstate;
	timelist_i++;
	timelist[timelist_i]=temp3;
	timelist_i++;
	timelist[timelist_i]=cmp;
	timelist_i++;
	timelist[timelist_i]=SYN_ADDR_TXDSTATE&0x3ffffff;
	timelist_i++;
	timelist[timelist_i]=SYN_ADDR_RXDSTATE&0x3ffffff;
	timelist_i++;
	timelist[timelist_i]=SYN_ADDR_PNUM&0x3;
	timelist_i++;
	
	if(timelist_i>1960)
	{
		SYN_ADDR_TXDCNTCMP=0x0;			//暂停定时中断,输出数据;
		for(timelist_i=0;timelist_i<1960;timelist_i++)
		{
			//if(timelist_i%6==0)
			//{
				uartsend("\n\r");
				uartsend("#");
				ltoa(timelist_i/6,data,10);
				uartsend(data);
				
			//}
			
			uartsend("\tnowstate=");
    		ltoa(timelist[timelist_i],data,10);
    		uartsend(data);
    		timelist_i++;
    		
			uartsend("\tINTSTATE=");
    		ltoa(timelist[timelist_i],data,2);
    		uartsend(data);
    		timelist_i++;
   			   			
   			uartsend("\tcmp=");
    		ltoa(timelist[timelist_i],data,16);
    		uartsend(data);
    		timelist_i++;
   			   			
   			uartsend("\tTXDSTATE=");
   	 		ltoa(timelist[timelist_i],data,2);
    		uartsend(data);
    		timelist_i++;
   			   			
    		
    		uartsend("\tRXDSTATE=");
    		ltoa(timelist[timelist_i],data,2);
    		uartsend(data);
    		timelist_i++;
   			   			
    		
    		uartsend("\tPNUM=");
    		ltoa(timelist[timelist_i],data,10);
    		uartsend(data);
    		
   		}
		
		nowtest++;
		uartsend("\n\r#测试10:数据传输正确性测试");
		uartsend("\n\r         测试方法:检测接收到的数据。\n\r");
		uartsend("\n\r下面列出此时接收存储区的内容!");
		uartsend("\n\r#注意:1.接收数据真最后的16位数据不同是因为,每次读数据会读取8个bit,最后会读取连续的几个1,也就是信道空闲的状态");
   		uartsend("\n\r       2.由于勤务帧的63bit序列影响,导致接收到的勤务帧内容看似和发送的不同,实际相同,是左移的结果。");
		
		uartsend("\n\r已经接收数据如下:");
		
		point=&SYN_ADDR_RDATA;
		for(timelist_i=0;timelist_i<31;timelist_i++)
		{
			ltoa((int)point,data,16);
    		uartsend("\n\r@ 0x");
    		uartsend(data);
    		uartsend("\t");
    	
    		for(i=0;i<8;i++)
    		{
    			uartsend("0x");
    			ltoa(*point,data,16);
    			uartsend(data);
    			uartsend(" ");
    			point++;
    		}	
    	}
		
		uartsend("\n\r通过观测接收数据来确定接收的正确性。");
		
		timelist_i=0;
		
		//SYN_ADDR_TXDSTATEWRB=0x100000;
		nowstate=0;
		nowtosend=16;
		timelist_i=0;
		cmp=0x0;
		SYN_ADDR_TXDCNTCMP=0x34000000;
		
	}	

}

void datatest(void)
{
	B32 *point;
	B32 i,temp;
	temp=SYN_ADDR_RXDSTATE&0x3ffffff;
	//uartsend("^");
	
	if(temp!=0)
	{
		timelist[timelist_i]=nowstate;
		timelist_i++;
		
		timelist[timelist_i]=temp;
		timelist_i++;
		
		//temp=(B32)(log10((double)temp)/log10(2.0));//太耗时,不用
		/*if(temp<20)
    	{
    		point=&SYN_ADDR_RDATA;
    		point=point+8*temp;
    	}
    	if(temp==20)
    	{
    		point=&SYN_ADDR_RQW;
    	}
    	if(temp==25)
		{
			point=&SYN_ADDR_RBG;
		}
		*/
		
		point=&SYN_ADDR_RDATA;
		switch(temp)
		{
			case 0x1:
			{
				break;
			}
			case 0x2:
			{
				point=point+8*1;
				break;
			}
			case 0x4:
			{
				point=point+8*2;
				break;
			}
			case 0x8:
			{
				point=point+8*3;
				break;
			}
			
			case 0x10:
			{
				point=point+8*4;
				break;
			}
			case 0x20:
			{
				point=point+8*5;
				break;
			}
			case 0x40:
			{
				point=point+8*6;
				break;
			}
			case 0x80:
			{
				point=point+8*7;
				break;
			}
			case 0x100:
			{
				point=point+8*8;
				break;
			}
			case 0x200:
			{
				point=point+8*9;
				break;
			}
			case 0x400:
			{
				point=point+8*10;
				break;
			}
			case 0x800:
			{
				point=point+8*11;
				break;
			}
			case 0x1000:
			{
				point=point+8*12;
				break;
			}
			case 0x2000:
			{
				point=point+8*13;
				break;
			}
			case 0x4000:
			{
				point=point+8*14;
				break;
			}
			case 0x8000:
			{
				point=point+8*15;
				break;
			}
			case 0x10000:
			{
				point=point+8*16;
				break;
			}
			case 0x20000:
			{
				point=point+8*17;
				break;
			}
			case 0x40000:
			{
				point=point+8*18;
				break;
			}
			case 0x80000:
			{
				point=point+8*19;
				break;
			}
			case 0x100000:
			{
				point=&SYN_ADDR_RQW;
				break;
			}
			case 0x2000000:
			{
				point=&SYN_ADDR_RBG;
				break;
			}
			default:
			{
				//uartsend("~");
				
			}
			

		}
		
		timelist[timelist_i]=(B32)point;
		timelist_i++;
		
		for(i=0;i<8;i++)
		{
			timelist[timelist_i]=*point;
			timelist_i++;
			point++;
		}	
	
	}
	
    if(timelist_i>5874)
	{
		SYN_ADDR_TXDCNTCMP=0x0;			//暂停定时中断,输出数据;
		
		for(timelist_i=0;timelist_i<5874;)
		{
			if(timelist_i%11==0)
			{	
				uartsend("\n\r#nowstate= ");
				uartsend("0x");
    			ltoa(timelist[timelist_i],data,16);
    			uartsend(data);
				timelist_i++;
				uartsend("\t#RXDSTATE= ");
				uartsend("0x");
    			ltoa(timelist[timelist_i],data,16);
    			uartsend(data);
				timelist_i++;
				uartsend("\t#RECEIVE FROM ");
				uartsend("0x");
    			ltoa(timelist[timelist_i],data,16);
    			uartsend(data);
    			uartsend("\t  ");
    			timelist_i++;
			}
			    	
    		for(i=0;i<8;i++)
    		{
    			uartsend("0x");
    			ltoa(timelist[timelist_i],data,16);
    			uartsend(data);
    			uartsend(" ");
    			timelist_i++;
    		}
    		
    	}
    	
    	nowtest++;
    	
    	uartsend("\n\r 测试结束!可以观测波形。");
    	    	
		timelist_i=0;
		
		SYN_ADDR_TXDSTATEWRB=0x100000;
		nowstate=0;
		nowtosend=16;
		timelist_i=0;
		cmp=0x0;
		SYN_ADDR_TXDCNTCMP=0x34000000;
	}
}

void last(void)
{
	//times=times+1;
	

}

/*
		uartsend("\n\r现在将数据全部填充为0");
		uartsend("\n\r以下为写入存储器的内容:");    
    	point=&SYN_ADDR_TDATA;		//DATA
    	for(i=0;i<20;i++)
    	{
    		uartsend("\n\r@ 0x");
    		ltoa((int)point,data,16);
    		uartsend(data);
    	
    		*point=M32;
    		ltoa(M32,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    	
    		point++;
    		*point=0x0;
    		ltoa(0x0,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    	
    		point++;
    		*point=0x0;
    		ltoa(0x0,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    	
    		point++;
    		*point=0x0;
    		ltoa(0x0,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    		    	
    		point++;
    		*point=0x0;
    		ltoa(0x0,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    		
    		point++;
    		*point=0x0;
    		ltoa(0x0,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    	
    		point++;
    		*point=0x0;
    		ltoa(0x0,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    		
    		point++;
    		*point=0x0;
    		ltoa(0x0,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    	
    		point++;
    	}				         			
    
   		point=&SYN_ADDR_TQW;				//QW
    	uartsend("\n\r@ 0x");
    	ltoa((int)point,data,16);
   	 	uartsend(data);
    	*point=M63L;
    	ltoa(M63L,data,16);
    	uartsend(" 0x");
    	uartsend(data);   								
    	point++;
    	*point=M63H;
    	ltoa(M63H,data,16);
    	uartsend(" 0x");
    	uartsend(data);
   		for(i=0;i<7;i++)
    	{
    		point++;
    		*point=0x0;
    		ltoa(0x0,data,16);
    		uartsend(" 0x");
    		uartsend(data);
    		
    	}
       		
    	point=&SYN_ADDR_TBG;				//BG
    	uartsend("\n\r@ 0x");
    	ltoa((int)point,data,16);
   		uartsend(data);
    	*point=0x0;
    	ltoa(0x0,data,16);
    	uartsend(" 0x");
   		uartsend(data);
    	point++;
   		*point=0x0;
   	 	ltoa(0x0,data,16);
    	uartsend(" 0x");
    	uartsend(data);
    
    	uartsend("\n\r");
    	*/

⌨️ 快捷键说明

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