文件见下
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "key.h"
- #include "lcd.h"
- #include "sdram.h"
- #include "lan8720.h"
- #include "timer.h"
- #include "pcf8574.h"
- #include "mpu.h"
- #include "usmart.h"
- #include "malloc.h"
- #include "malloc.h"
- #include "lwip/netif.h"
- #include "lwip_comm.h"
- #include "lwipopts.h"
- //在LCD上显示地址信息
- //mode:2 显示DHCP获取到的地址
- // 其他 显示静态地址
- void show_address(u8 mode)
- {
- u8 buf[30];
- if(mode==2)
- {
- sprintf((char*)buf,"MAC :%d.%d.%d.%d.%d.%d",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);//打印MAC地址
- LCD_ShowString(30,130,210,16,16,buf);
- sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]); //打印动态IP地址
- LCD_ShowString(30,150,210,16,16,buf);
- sprintf((char*)buf,"DHCP GW:%d.%d.%d.%d",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]); //打印网关地址
- LCD_ShowString(30,170,210,16,16,buf);
- sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]); //打印子网掩码地址
- LCD_ShowString(30,190,210,16,16,buf);
- }
- else
- {
- sprintf((char*)buf,"MAC :%d.%d.%d.%d.%d.%d",lwipdev.mac[0],lwipdev.mac[1],lwipdev.mac[2],lwipdev.mac[3],lwipdev.mac[4],lwipdev.mac[5]);//打印MAC地址
- LCD_ShowString(30,130,210,16,16,buf);
- sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]); //打印动态IP地址
- LCD_ShowString(30,150,210,16,16,buf);
- sprintf((char*)buf,"Static GW:%d.%d.%d.%d",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]); //打印网关地址
- LCD_ShowString(30,170,210,16,16,buf);
- sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]); //打印子网掩码地址
- LCD_ShowString(30,190,210,16,16,buf);
- }
- }
- int main(void)
- {
- u16 i=0;
-
- Write_Through(); //开启强制透写!
- MPU_Memory_Protection(); //保护相关存储区域
- Cache_Enable(); //打开L1-Cache
-
- HAL_Init(); //初始化HAL库
- Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
- delay_init(216); //延时初始化
- uart_init(115200); //串口初始化
- usmart_dev.init(108); //初始化USMART
- LED_Init(); //初始化LED
- KEY_Init(); //初始化按键
- SDRAM_Init(); //初始化SDRAM
- LCD_Init(); //初始化LCD
- PCF8574_Init(); //初始化PCF8574
- my_mem_init(SRAMIN); //初始化内部内存池
- my_mem_init(SRAMEX); //初始化外部内存池
- my_mem_init(SRAMDTCM); //初始化DTCM内存池
- POINT_COLOR = RED;
- LCD_ShowString(30,30,200,16,16,"Apollo STM32F4/F7");
- LCD_ShowString(30,50,200,16,16,"Ethernet lwIP est");
- LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
- LCD_ShowString(30,90,200,16,16,"2016/7/19");
- TIM3_Init(1000-1,1080-1); //定时器3初始化,定时器时钟为108M,分频系数为1080-1,
- //所以定时器3的频率为108M/1080=100K,自动重装载为1000-1,那么定时器周期就是10ms
- while(lwip_comm_init()) //lwip初始化
- {
- LCD_ShowString(30,110,200,20,16,"LWIP Init Falied! ");
- delay_ms(500);
- LCD_ShowString(30,110,200,16,16,"Retrying... ");
- delay_ms(500);
- }
- LCD_ShowString(30,110,200,20,16,"LWIP Init Success!");
- LCD_ShowString(30,130,200,16,16,"DHCP IP configing..."); //等待DHCP获取
- #if LWIP_DHCP //使用DHCP
- while((lwipdev.dhcpstatus!=2)&&(lwipdev.dhcpstatus!=0XFF))//等待DHCP获取成功/超时溢出
- {
- lwip_periodic_handle(); //LWIP内核需要定时处理的函数
- }
- #endif
- show_address(lwipdev.dhcpstatus); //显示地址信息
- while(1)
- {
- lwip_periodic_handle(); //LWIP内核需要定时处理的函数
- delay_us(200);
- i++;
- if(i==2000)
- {
- i=0;
- LED0_Toggle;
- }
- }
- }
复制代码
所有资料51hei提供下载:
网络实验1 LWIP无操作系统移植.rar
(1.77 MB, 下载次数: 39)
|