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

📄 demo.c

📁 mcf5307开发板上进行iic接口实验
💻 C
📖 第 1 页 / 共 2 页
字号:
{
  int MySocket,NewSocket;
  struct addr_struct  servaddr;              /* holds the server address structure */
  struct addr_struct  client_addr;
  int status,Count;
  
  NU_Socket(NU_FAMILY_IP,NU_TYPE_STREAM,NU_PROTO_TCP);

while(1)  
{ 
  servaddr.family    = NU_FAMILY_IP;
  servaddr.port      = 23;
  memcpy(servaddr.id.is_ip_addrs, LocalIp, 4);
  
  NU_Sleep(200);
  
  if(1)
  {
   	MySocket=GetMySocketNumber(next_socket_no);	  	
        MySocket=0;

   	if( (NU_Bind(MySocket, &servaddr, 0))>=0 )
   		{
    		 status = NU_Listen(MySocket, 10);	
                 NewSocket= NU_Accept(MySocket, &servaddr, 0);
                 Printf("\r\nServer start!\r\n");
                 Count=1;
      		 while(Count>=0)
                      {
                       NU_fcntl(NewSocket, NU_SETFLAG, NU_BLOCK, 0);    //set block flag		
                       Count=NU_Recv(NewSocket,ServerBuf,1500,0);          //to get data
                       NU_fcntl(NewSocket, NU_SETFLAG, NU_FALSE, 0);    //clear block flag	

                       if(Count>=0)
                         {
                          ServerBuf[Count]=0x00;                              	
                          Printf(ServerBuf);
                         }   
                      }
                 NU_Close_Socket(NewSocket);
                 Printf("\r\nServer shutdown for connection lost!\r\n");	  
                }
        else
        {
         Printf("\r\nServer Bind fail!\r\n");	
        }   
  }
  else
  {
   Printf("\r\nServer socket open fail!\r\n"); 	
  }
  
}  
  
  	
	
}



//to start another Task to sta. how many add. the cpu can do in 1 sec.
void   p_CpuTime(UNSIGNED argc, VOID *argv)
{
 VOID           *pointer;	
 NU_TASK         CpuAddTime;  	
 NU_TIMER	timer_demo;
 
// asm("  MOVE.L  #$10000248,A0  ");
        
// asm("  MOVE.W	#$0000,(A0)   ");

// NU_Sleep(10);
 

// NU_Allocate_Memory(&System_Memory, &pointer, 1024, NU_NO_SUSPEND);
// NU_Create_Task(&CpuAddTime, "CpuATime", p_CpuAddTime, 0, NU_NULL, pointer, 1024, 255, 3,
//                                                      NU_PREEMPT, NU_NO_START);         	
// NU_Sleep(10);
                                                      
// CpuSpeed=0;	
 
 
// asm("  MOVE.L  #$10000248,A0  ");
// asm("  MOVE.W	#$FFFF,(A0)   ");
 
// NU_Resume_Task(&CpuAddTime);
// NU_Sleep(100);
// MaxSpeed=CpuSpeed;
// CpuSpeed=0;	
  
// asm("  MOVE.L  #$10000248,A0  ");
// asm("  MOVE.W	#$0000,(A0)   ");
 
// NU_Create_Timer(&timer_demo, "TIMER", expiration_routine, 1, 100, 100,NU_ENABLE_TIMER);
 
 NU_Resume_Task(&Task_1);
 NU_Resume_Task(&Task_2);
 NU_Resume_Task(&Task_3);
 
// NU_Suspend_Task(&CpuTime);
	
}

void   p_CpuAddTime(UNSIGNED argc, VOID *argv)
{
 while(1)
 {
  CpuSpeed++;	
 }	
}

void expiration_routine(UNSIGNED id)
{
 
 unsigned short  Temp;
 
 Temp=MaxSpeed/1000;	
 CurrentSpeed=CpuSpeed;	
 CpuSpeed=0;
 CpuUsage=1000-(CurrentSpeed/(Temp+100) );
 if(CpuUsage<0)  CpuUsage=0;
 
}






void    task_debug(UNSIGNED argc, VOID *argv)
{ 
 unsigned long KeyNumber;	
 unsigned long dat;
 Printf(">");                 //display the prompt
 while(1)
 {	
  
   KeyNumber=GetKey();          //return until "ENTER" pressed ,KeyNumber presents how many key received  
   
   /* to explain the key */

   switch(RxData[0])
                   {
                    case '1':ShowTask();break;
                    case '2':TodoARP(); break;
                    case '3':TodoTCP(); break;
                    case '4':DisTCP();  break;
                    default: {
			      if(NU_TRUE!=NU_Is_Connected(MySocketNumber))
       				Printf("Bad command or command not found\r\n");   
   			      else
                               {       
                                NU_Send(MySocketNumber,RxData,KeyNumber,0); 
                                Printf("\r\n*********Command Send to socket! ********\r\n");
                               } 	                     
                             }    
                   }   
   
  Printf(">");
  //dat = imm->IMR;  
 } 
 
 
}



void ShowTask(void)
{
 unsigned long TaskNumber,i;
 NU_TASK *Pointer_Array[MaxNumberOfTask];
 
 char Buf[20];
 char Buf1[20];
 
 struct TaskInfo
 {
  char  Name[9];
  DATA_ELEMENT task_status;
  UNSIGNED scheduled_count;
  OPTION   priority;
  OPTION   preempt;
  UNSIGNED time_slice;
  VOID     *stack_base;
  UNSIGNED stack_size;
  UNSIGNED minimum_stack;   	
 };
 
 struct TaskInfo Info;

	
	
   Printf("\r\n\r\nName    Status      sch._count Pri. Pre. Slice S._base    S._size    Min._stack  \r\n"); 

   TaskNumber = NU_Task_Pointers(&Pointer_Array[0],MaxNumberOfTask);
   
   for(i=0;i<TaskNumber;i++)
  {   
   Info.Name[8]=0x00;
   NU_Task_Information(Pointer_Array[i],
                      (Info.Name),
                      &(Info.task_status),
  		      &(Info.scheduled_count),
                      &(Info.priority), 
  		      &(Info.preempt),
                      &(Info.time_slice), 
                      &(Info.stack_base),
                      &(Info.stack_size),
                      &(Info.minimum_stack) 
                     );
                     
  switch(Info.task_status)
        {
         case(NU_READY): sprintf(Buf,"READY");break;
         case(NU_PURE_SUSPEND): sprintf(Buf,"PURE_S");break;
         case(NU_FINISHED): sprintf(Buf,"FINISHED");break;
         case(NU_TERMINATED): sprintf(Buf,"TERMINATED");break;
         case(NU_SLEEP_SUSPEND): sprintf(Buf,"SLEEP_S");break;
         case(NU_MAILBOX_SUSPEND): sprintf(Buf,"MAILBOX_S");break;
         case(NU_QUEUE_SUSPEND): sprintf(Buf,"QUEUE_S");break;
         case(NU_PIPE_SUSPEND): sprintf(Buf,"PIPE_S");break;
         case(NU_EVENT_SUSPEND): sprintf(Buf,"EVENT_S");break;
         case(NU_SEMAPHORE_SUSPEND): sprintf(Buf,"SEMAPHORE_S");break;
         case(NU_MEMORY_SUSPEND): sprintf(Buf,"MEMORY_S");break;
         case(NU_PARTITION_SUSPEND): sprintf(Buf,"PARTITION_S");break;
         case(NU_DRIVER_SUSPEND): sprintf(Buf,"DRIVER_S");break;	  
         default:sprintf(Buf,"UNKNOWN");
        } 
                     
  switch(Info.preempt)
       {
       	case(NU_NO_PREEMPT): sprintf(Buf1,"No");break;
       	case(NU_PREEMPT): sprintf(Buf1,"Yes");break;
        default:sprintf(Buf1,"UNKNOWN");
       }                     
                     
  sprintf(DebugBuffer,"%-8s%-11s%11ld %3d %-3s  %5ld 0x%08lX 0x%08lX 0x%08lX\r\n",
                        Info.Name,
                        Buf,
                        Info.scheduled_count,
                        Info.priority,
                        Buf1,
                        Info.time_slice,
                        Info.stack_base,
                        Info.stack_size,
                        Info.minimum_stack
                        ); 
  
  Printf(DebugBuffer);
  
  
  
 }
 
 // sprintf(DebugBuffer,"\r\nCpu Usage is about %03d /1000\r\n",CpuUsage);
 // Printf(DebugBuffer);
   
}

⌨️ 快捷键说明

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