资源简介
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_CONNS; 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_CONNS; 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同邻频干扰
相关资源
- UiPath 官网Level 1 Lesson5题库
- RPA UiPath Level2终测答案
- STM32F103RBT6+DM9000CEP+UIP Telnet功能实现工
- STM32F103C8T6+ENC28J60+UIP1.0整个工程打包
- uIP STM32 TCP Echo
- ARX实现屏幕菜单(CAdUiPaletteSet)
- uipath学习资料.docx
- RPA UiPath level3第一个练习,项目
- tcp ip 奋斗STM32开发板uIP1.0_以太网例程
- uip1.0完整源码+应用+uip1.0中文说明pd
- Uipath leave1 试题+答案.rar
- UiPath学院Level1习题集.docx
- UIParticlesSystem.unitypackage
- UiPath-Level3-test2
- iOS点菜系统 pickerView
- UIPath Online Quiz理论考试题+答案.docx
- UIP源代码1.0版
- STM32F103VC FSMC DM9000驱动例程
- STM32 UIP移植详解
- STM32搭配DM9000网卡利用uIP实现TCP通信
评论
共有 条评论