資源簡介
AVR配合ENC28J60芯片移植uIP實現web客戶端
Atmega644+ENC28J60+AtmelStudio6.1,移植uIP1.0協議棧,實現網絡客戶端功能,可以訪問www網頁獲取數據

代碼片段和文件信息
#include?
#include?
#include?“uip.h“
#include?“uip_arp.h“
#include?“tapdev.h“
#include?“LCD.h“
#include?“timer.h“
#include?
#define?BUF?((struct?uip_eth_hdr?*)&uip_buf[0])
#ifndef?NULL
#define?NULL?(void?*)0
#endif?/*?NULL?*/
unsigned?char?DDRAM_address[]={
0x800x810x820x830x840x850x860x87??????//第一行
0x900x910x920x930x940x950x960x97??????//第二行
0x880x890x8a0x8b0x8c0x8d0x8e0x8f??????//第三行
0x980x990x9a0x9b0x9c0x9d0x9e0x9f??????//第四行
};
volatile?unsigned?int?arp_count; //10s定時器計數
volatile?unsigned?int?periodic_count; //0.5s定時器計數
volatile?unsigned?char?arp_flag?=?0; //10s定時標志位
volatile?unsigned?char?periodic_flag?=?0; //0.5s定時標志位
/*---------------------------------------------------------------------------*/
int?main(void)?{
int?i;
uip_ipaddr_t?ipaddr;
struct?timer?periodic_timer?arp_timer;
unsigned?char?webclient_get_flag?=?0;
timer_init(); //修改的初始化
USART0_init();
LCD_init();
uip_init(); //uip初始化
uip_arp_init();
uip_ipaddr(ipaddr?1921681123); //IP
uip_sethostaddr(ipaddr);
uip_ipaddr(ipaddr?2552552550); //掩碼
uip_setnetmask(ipaddr);
uip_ipaddr(ipaddr?19216811); //網關
uip_setdraddr(ipaddr);
tapdev_init(); //以太網初始化
webclient_init(); //web?client初始化(此處無需配置,為空函數)
resolv_init(); //DNS解析初始化
uip_ipaddr(ipaddr19216811); //DNS服務器
resolv_conf(ipaddr);
resolv_query(“www.xxx.com“); //網頁服務器
?
while(1)?
{
//LCD_show_number(30uip_conn->tcpstateflags); //檢測連接狀態
uip_len?=?tapdev_read(); //讀以太網包,返回包長
if(uip_len?>?0)?
{
if(BUF->type?==?htons(UIP_ETHTYPE_IP)) //為IP包
{
uip_arp_ipin(); //IP數據包處理函數
uip_input(); //實際為uip_process,IP包核心處理函數
if(uip_len?>?0)
{
uip_arp_out(); //發出ARP包
tapdev_send(); //數據送出
}
}
else?if(BUF->type?==?htons(UIP_ETHTYPE_ARP)) //為ARP包
{
uip_arp_arpin(); //ARP數據包處理函數
/*?If?the?above?function?invocation?resulted?in?data?that
???should?be?sent?out?on?the?network?the?global?variable
???uip_len?is?set?to?a?value?>?0.?*/
if(uip_len?>?0)?
{
tapdev_send(); //ARP響應
}
}
}?
else?if(periodic_flag?==?1)?//0.5秒定時
{
periodic_flag?=?0;
for(i?=?0;?i? {
uip_periodic(i); //uip定期處理函數
/*?If?the?above?function?invocation?resulted?in?data?that
???should?be?sent?out?on?the?network?the?global?variable
???uip_len?is?set?to?a?value?>?0.?*/
if(uip_len?>?0) //有數據需要發送
{
uip_arp_out();
tapdev_send();
}
}
#if?UIP_UDP //如果支持UDP
for(i?=?0;?i? {
uip_udp_periodic(i);
/*?If?the?above?function?invocation?resulted?in?data?that
???should?be?sent?out?on?the?network?the?global?variable
???uip_len?is?set?to?a?value?>?0.?*/
if(uip_len?>?0)?
{
uip_arp_out();
tapdev_send();
}
}
#endif?/*?UIP_UDP?*/
??????
??????
if(a
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-06-05?15:47??avr_enc28j60_uIP\
?????目錄???????????0??2014-06-05?15:47??avr_enc28j60_uIP\Rainest\
?????目錄???????????0??2014-06-05?15:47??avr_enc28j60_uIP\Rainest\DELAY\
?????文件????????1582??2014-05-22?14:12??avr_enc28j60_uIP\Rainest\DELAY\Delay.c
?????文件?????????260??2014-05-22?14:12??avr_enc28j60_uIP\Rainest\DELAY\Delay.h
?????目錄???????????0??2014-06-05?15:50??avr_enc28j60_uIP\Rainest\Debug\
?????目錄???????????0??2014-06-05?15:47??avr_enc28j60_uIP\Rainest\Debug\DELAY\
?????文件??????????85??2014-05-30?11:00??avr_enc28j60_uIP\Rainest\Debug\DELAY\Delay.d
?????文件????????4720??2014-05-30?11:00??avr_enc28j60_uIP\Rainest\Debug\DELAY\Delay.o
?????目錄???????????0??2014-06-05?15:47??avr_enc28j60_uIP\Rainest\Debug\ENC28J60\
?????文件????????3817??2014-05-30?14:56??avr_enc28j60_uIP\Rainest\Debug\ENC28J60\enc28j60.d
?????文件???????21540??2014-05-30?14:56??avr_enc28j60_uIP\Rainest\Debug\ENC28J60\enc28j60.o
?????文件????????3402??2014-05-30?11:01??avr_enc28j60_uIP\Rainest\Debug\ENC28J60\spi.d
?????文件????????5776??2014-05-30?11:01??avr_enc28j60_uIP\Rainest\Debug\ENC28J60\spi.o
?????目錄???????????0??2014-06-05?15:47??avr_enc28j60_uIP\Rainest\Debug\LCD\
?????文件????????3377??2014-05-30?11:01??avr_enc28j60_uIP\Rainest\Debug\LCD\LCD.d
?????文件???????18204??2014-05-30?11:01??avr_enc28j60_uIP\Rainest\Debug\LCD\LCD.o
?????文件????????8439??2014-06-05?15:50??avr_enc28j60_uIP\Rainest\Debug\Makefile
?????文件??????????13??2014-06-05?15:50??avr_enc28j60_uIP\Rainest\Debug\Rainest.eep
?????文件???????76851??2014-06-05?15:50??avr_enc28j60_uIP\Rainest\Debug\Rainest.elf
?????文件???????32062??2014-06-05?15:50??avr_enc28j60_uIP\Rainest\Debug\Rainest.hex
?????文件??????290731??2014-06-05?15:50??avr_enc28j60_uIP\Rainest\Debug\Rainest.lss
?????文件???????57030??2014-06-05?15:50??avr_enc28j60_uIP\Rainest\Debug\Rainest.map
?????文件???????31384??2014-06-05?15:50??avr_enc28j60_uIP\Rainest\Debug\Rainest.srec
?????目錄???????????0??2014-06-05?15:47??avr_enc28j60_uIP\Rainest\Debug\UIP\
?????文件????????1788??2014-05-30?14:56??avr_enc28j60_uIP\Rainest\Debug\UIP\resolv.d
?????文件???????16124??2014-05-30?14:56??avr_enc28j60_uIP\Rainest\Debug\UIP\resolv.o
?????文件????????1802??2014-05-30?14:56??avr_enc28j60_uIP\Rainest\Debug\UIP\tapdev.d
?????文件????????4324??2014-05-30?14:56??avr_enc28j60_uIP\Rainest\Debug\UIP\tapdev.o
?????文件????????3387??2014-05-30?11:01??avr_enc28j60_uIP\Rainest\Debug\UIP\timer.d
?????文件????????2584??2014-05-30?11:01??avr_enc28j60_uIP\Rainest\Debug\UIP\timer.o
............此處省略53個文件信息
- 上一篇:基于arduino mega2560的步進電機控制
- 下一篇:GSM同鄰頻干擾
評論
共有 條評論