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

📄 net_main.h

📁 TI的2812控制交通灯
💻 H
字号:
//#define UCHAR unsigned char
//#define UINT  unsigned long
#define u16 unsigned int
#define u8	unsigned char
#define u32 unsigned long


//#define ENABLE         na_NET_INT->np_piointerruptmask=1
//#define DISABLE        na_NET_INT->np_piointerruptmask=0

#define SET_PAGE0    NET_Write_Data(0x0000,0x22)
#define SET_PAGE1    NET_Write_Data(0x0000,0x62)

#define PACK_ARP  0x0806
#define PACK_IP   0x0800
#define ARP_PACK_Len  60

#define Start_offset    4     //以太网偏移
#define Start_Ethernet  0
#define Start_ARP       14
#define Start_IP        14
#define Start_ICMP      34
#define Start_TCP       34
#define Start_HTTP      54

#define TCP_Symbol_FIN  0x01
#define TCP_Symbol_SYN  0x02
#define TCP_Symbol_RST  0x04
#define TCP_Symbol_PSH  0x08
#define TCP_Symbol_ACK  0x10
#define TCP_Symbol_URG  0x20



//------------------------------------------------------------------------------  y13.c
void Delay(u16 m_Delay);  //延时子程序
void NET_Write_Data(u16 m_Addr,u8 m_Data);  //8019写一个数据的时序
u8 NET_Read_Data(u16 m_Addr);     //8019读一个数据的时序
void NET_Page_Set(u16 m_Page);      //设定当前页面
u16 NET_ID(u8 m_Num);        //获得8019的ID
void Set_MAC_Addr(void);  //设置8019网卡MAC地址
void Read_Phy_ID(void);     //获得网卡物理地址  该程序可能有点问题
void NET_Hard_Reset(void);      //8019硬复位
void NET_Soft_Reset(void);      //8019软复位
void NET_INT_ISR(int context);  //中断服务子程序
void Init_system(void);   //系统初始化
void Init_NET(void);  //8019初始化
void DMA_Write_Data(u8 *m_Buffer,u16 m_StartAddr,u16 m_Len);   //DMA写数据,指定数据,指定8019存储地址,指定长度
void NET_CLEAR_Data(void);   //清除8019的原始数据
void DMA_Read_Data(u8 *m_Buffer,u16 m_StartAddr,u16 m_Len);  //DMA读数据,指定8019地址,指定数据存放地址,指定长度
void NET_Send_Packet(u8 *m_Buffer,u16 m_Len); //发送数据包,起始页面和地址
void NET_Wait_PACK(void);  //等待收到新的数据,并将一个完整的数据包写入Receive_Buffer中,并检出包类型
u16 m_Data_Compare(u8 *Addr1,u16 Start_Addr1,u8 *Addr2,u16 Start_Addr2,u16 Len);  //多个数据判断
u16 CHECK_SUM(u8 *Addr,u16 Start_Len,u16 Len);   //计算校验和
//------------------------------------------------------------------------------  net_arp.c
void SaveAdd(void);
void IP_ARP(void);     //ARP数据处理
//------------------------------------------------------------------------------  net_ping.c
void Revert_Ping(void);  //回复Ping数据包
//------------------------------------------------------------------------------  net_head.c
void HEAD_Ethernet (void); //以太网头,14个字节
void HEAD_IP(void);  //IP头,20字节
void HEAD_TCP(void);  //TCP头,20字节
//------------------------------------------------------------------------------  net_tcp.c
void IP_TCP(void);       //tcp协议处理程序
void Send_TCP_PACK(void);  //发送TCP连接用的标志数据包
void Change_u32_u8(u8 *Buffer,u16 Start,u32 Data);   //将一个32位的数据转换成4个8位的数组
u32 Change_u8_u32(u8 *Buffer,u16 Start);   //数据转换,将4个8位数组转换成一个32位无符号整数
//------------------------------------------------------------------------------  net_http.c
void APP_HTTP(void);     //http应用处理程序
void Send_HTTP_Response(void);  //发送HTTP的请求响应包
void Send_HTTP_Content(void);  //发送HTTP的内容数据包
u16 Change_Dec_ASC(u16 Data,u8 *ASC);  //将数字转换成ASC码
//------------------------------------------------------------------------------

u16 PACK_Type;  //数据包类型,区别于ARP,IP,RARP

u16 PACK_Len;      //数据包总长度
u16 IP_PACK_Len;   //IP数据包长度

u16 HEAD_Len_Ethernet = 14;  //以太网首部长度
u16 HEAD_Len_IP       = 20;  //IP首部长度
u16 HEAD_Len_TCP      = 20;  //TCP首部长度

u16 DATA_Len_HTTP;           //HTTP数据长度
u16 DATA_Len_TCP;            //TCP数据长度

u8 TCP_Symbol_Receive;
u8 TCP_Symbol_Send;


u8 BURY_Data;
u16  BURY_Addr=0x0003;

u8 CURR_Data;
u16  CURR_Addr=0x0007;

u16 CR_Addr=0x0000;

u8 MAC_Addr[]={0x00,0x0f,0x02,0x97,0xa8,0xfb};  //本地MAC地址
u8 MAC_O_Addr[6];                               //外部MAC地址
u8 MAC_R_Addr[]={0xff,0xff,0xff,0xff,0xff,0xff};  //广播MAC地址

u8 IP_Addr[]={192,168,1,2};                     //本地IP地址
u8 IP_O_Addr[4];                                //外部IP地址

u8 Send_Buffer[1536+20];  //发送缓冲区
u8 Receive_Buffer[1536+20]; //接收缓冲区

u8 TCP_State=0;
/*TCP的状态,
0 初始状态,等待被动连接
1 等待被动连接的第3次握手
2 正常传输状态,或等待被动断开
3 在被动断开情况下,等待第4次握手
4 在主动断开情况下,等待第2次握手
5 在主动断开情况下,等待第3次握手

6 等待HTTP响应的ACK
7 等待HTTP内容的ACK
*/


u16  TCP_Port=0;          //本地端口号
u16  TCP_Port_O=0;        //外部端口号

u32  TCP_ISN=0x80000000L;  //本地序号
u32  TCP_ISN_O;           //外部序号
u32  TCP_ISN_A;           //本地确认序号
u32  TCP_ISN_OA;          //外部确认序号

u16  Receive_PACK_HTTP_Len;  //收到的HTTP包中,http数据长度


u8 html_header1[]={"HTTP/1.1 200 OK\r\n"                 //17
                     "Cache-control: no-cache\r\n"         //25
                     //"Connection: Keep-Alive\r\n"          //24
                     "Content-Length: "};

u8 html_header2[]={"\r\n"
                     "Connection: close\r\n"
                     "Content-Type: text/html\r\n\r\n" };


u8 html_header[]={"HTTP/1.1 200 OK\r\n"
                     "Cache-control: no-cache\r\n"
                     "Connection: Keep-Alive\r\n"
                     "Content-Length: 1\r\n"
                     "Content-Type: text/html\r\n\r\n" };


u8 web_page1[] = {"<html>\n"
                     "<head>\n"
                     "<title>DSP实验箱主页</title>\n"
                     "</head>\n"
                     "<body>\n"
                     "<h1>本网页被浏览"};

u8 web_page2[] = {"次</h1>\n"
                     "<marquee height=40 width=100% bgcolor=aaeeaa>\n"
                     "<h2>北京百科融创科技有限公司欢迎您选用本公司产品!</h2>\n"
                     "</marquee>\n"
                     "</body>\n"
                     "</html>\n"};

u16  Content_Len;            //HTTP实体长度
u16  Content_Len_ASC_Byte;   //HTTP实体长度用ASC码表示时,占用的字节数
u8 Content_Len_ASC[10];     //HTTP实体长度,用ASC码表示,低位在前

u16  Open_Count=0;        //网页打开次数
u16  Open_Count_ASC_Byte;  //网页打开次数用ASC码表示时占用的字节数
u8 Open_Count_ASC[10];  //网页打开次数,用ASC码表示,低位在前




⌨️ 快捷键说明

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