?? test.c
字號:
SOCKET s;
struct sockaddr servaddr,cliaddr;
Arp_Request(ip_add,0);
OSTimeDly(60);
servaddr.sin_family=0;
servaddr.sin_addr[0]=192;
servaddr.sin_addr[1]=168;
servaddr.sin_addr[2]=0;
servaddr.sin_addr[3]=174;
servaddr.sin_port=80;
s=*socket( 0, 0, 0);
ei=bind( (SOCKET * )&s, (struct sockaddr*)&servaddr,sizeof(servaddr));
ei=listen( (SOCKET * )&s, 2 );
if(ei!=2)
while(1);
while (1)
{
Temp=accept( (SOCKET * )&s, (struct sockaddr*)&cliaddr,&addrlen );
if(Temp!=0xff)
{
while(1)
{
TempLength=recv( Temp,tempdata ,400, 0 );
if(TempLength > 0 )
{
if(tempdata[5]==' ')
{
send( Temp,(uint8 *)httpweb ,169, 0 );
//OSTimeDly(10);
send( Temp,(uint8 *)web ,395, 0 );
}
else if(tempdata[5]=='1')
{
send( Temp, (uint8 *)httpgif,169, 0 );
//OSTimeDly(10);
send( Temp,(uint8 *)bmp ,442, 0 );
}
break;
}
memset(tempdata, 0,400);
}
OSTimeDly(20);
close(Temp);
}
}
}
/* void TaskF(void *pdata)
{
uint8 Temp=0;
EX_RAM unsigned char ip_add[4]={192,168,0,55};
uint8 err;
while(1)
{
OSTimeDly(4);
err=Temp;
Temp=ip_add[2];
}
}*/
uint16 regphy1[25];
void task0(void *pdata)
{ /*在第1個任務中設置定時器0及中斷*/
extern uint32 ReadPHY( uint32 PHYReg );
uint32 i,j;
UBYTE iii;
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
TargetInit(); //add by cmj
//UBYTE EX_RAM *er;
OSTaskCreateExt(TaskB,
(void *)0,
&task1_stack[399],
TASK_1_PRIO,
TASK_1_ID,
&task1_stack[0],
400,
(void *)0,//&TaskUserData[TASK_4_ID]
0);
OSTaskCreateExt(TaskC,
(void *)0,
&task2_stack[399],
TASK_2_PRIO,
TASK_2_ID,
&task2_stack[0],
400,
(void *)0,//&TaskUserData[TASK_4_ID]
0);
/*OSTaskCreateExt(TaskF,
(void *)0,
&task5_stack[499],
TASK_5_PRIO,
TASK_5_ID,
&task5_stack[0],
500,
&TaskUserData[TASK_5_ID],
0);*/
SetNetPort();
InitNic(0); //RTL8019芯片初始化,在global.c中定義
Initial_arp();
Tcp_Initial();
Udp_Initial();
OSTaskCreateExt(TaskD,
(void *)0,
&task3_stack[399],
TASK_3_PRIO,
TASK_3_ID,
&task3_stack[0],
400,
(void *)0,//&TaskUserData[TASK_4_ID]
0);
OSTaskCreateExt(TaskE,
(void *)0,
&task4_stack[399],
TASK_4_PRIO,
TASK_4_ID,
&task4_stack[0],
400,
(void *)0,//&TaskUserData[TASK_4_ID]
0);
j = 0;
while(1)
{
OSSemPend(RecPackedFlag,100,&iii);
//OSTimeDly(4);
do
{
iii=Rec_Packet();
//MAC_INTENABLE = 0x000c;
}// end of do
while(iii!=0);
j++;
if (j >= 100)
{
//for(i = 0; i<25; i++)
// regphy1[i] = ReadPHY(i);
j=0;
}
}//end for while(1)
}
/*$PAGE*/
/*
*********************************************************************************************************
* MAIN
*********************************************************************************************************
*/
void Uart_SendChar(INT8U data)
{
while((U0LSR & 0x00000020) == 0);
U0THR = data;
}
//void main (void) //change by cmj
int main (void)
{UBYTE iii;
Timer1_Init();
OSInit(); /* Initialize uC/OS-II */
OSTaskCreateExt(task0,
(void *)0,
&task0_stack[399],
TASK_START_PRIO,
TASK_START_ID,
&task0_stack[0],
400,
(void *)0,//&TaskUserData[TASK_4_ID]
0);
RecPackedFlag= OSSemCreate(0);
RecBufOverFlowFlag= OSSemCreate(0);
RecTcpPackedFlag= OSSemCreate(0);
RecPingPackedFlag= OSSemCreate(0);
SendFlag= OSSemCreate(1);
RecIcmpQFlag= OSQCreate(&RecIcmpQ[0],Q_Max_Size);
RecTcpQFlag= OSQCreate(&RecTcpQ[0],Q_Max_Size);
RecUdpQFlag= OSQCreate(&RecUdpQ[0],Q_Max_Size);
U0TER = 'S';
U0TER = 'T';
U0TER = 'A';
U0TER = 'R';
U0TER = 'T';
U0TER = '.';
U0TER = '.';
U0TER = '.';
/*
for(iii=0;iii<MAX_TCP_LINKS;iii++)
{
AppSemSend[iii]= OSSemCreate(0);
AppSemCon[iii]= OSSemCreate(0);
AppSemDisc[iii]= OSSemCreate(0);
}*/
OSStart(); /* Start multitasking */
}
/*$PAGE*/
/*
*********************************************************************************************************
* STARTUP TASK
*********************************************************************************************************
*/
void Timer1_Init(void)
{
OS_ENTER_CRITICAL();
T1IR = 0xffffffff;
T1TC = 0;
T1TCR = 0x01;
T1MCR = 0x03;
T1MR0 = 0xffffff;//(Fpclk / OS_TICKS_PER_SEC);
OS_EXIT_CRITICAL();
}
void Timer1(void)
{
static uint8 m_10sec=0;
static uint8 p_sec=0;
static uint8 p_min=0;
uint8 num;
OS_ENTER_CRITICAL();
T1IR = 0x01;
// T0MR0 += (Fpclk / OS_TICKS_PER_SEC);
m_10sec++;
if(m_10sec==100)
{
p_sec++;
m_10sec=0;
if(Ping_IP_TTL>0)
Ping_IP_TTL--;
for(num=0;num<MAX_NET_PORT;num++)
{
for(p_min=0;p_min<MAX_ARP_TERM;p_min++)
{
if(NetPort[num].ARP_TERM[p_min].TTL>0)
NetPort[num].ARP_TERM[p_min].TTL--;
}
if(Gateway_IP_TTL>0)
NetPort[num].Gateway_IP_TTL--;
}
if(p_sec==60)
{
p_min++;
p_sec=0;
if(p_min==60)
{
p_min=0;
}
}
}
VICVectAddr = 0; // 通知中斷控制器中斷結(jié)束
OS_EXIT_CRITICAL();
//OSTimeTick();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -