找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3194|回复: 1
打印 上一主题 下一主题
收起左侧

STM32 LWIP无操作系统移植源码

[复制链接]
跳转到指定楼层
楼主
ID:426178 发表于 2018-11-14 09:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文件见下

单片机源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "key.h"
  6. #include "lcd.h"
  7. #include "sdram.h"
  8. #include "lan8720.h"
  9. #include "timer.h"
  10. #include "pcf8574.h"
  11. #include "mpu.h"
  12. #include "usmart.h"
  13. #include "malloc.h"
  14. #include "malloc.h"
  15. #include "lwip/netif.h"
  16. #include "lwip_comm.h"
  17. #include "lwipopts.h"

  18. //在LCD上显示地址信息
  19. //mode:2 显示DHCP获取到的地址
  20. //          其他 显示静态地址
  21. void show_address(u8 mode)
  22. {
  23.         u8 buf[30];
  24.         if(mode==2)
  25.         {
  26.                 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地址
  27.                 LCD_ShowString(30,130,210,16,16,buf);
  28.                 sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);                                                //打印动态IP地址
  29.                 LCD_ShowString(30,150,210,16,16,buf);
  30.                 sprintf((char*)buf,"DHCP GW:%d.%d.%d.%d",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);        //打印网关地址
  31.                 LCD_ShowString(30,170,210,16,16,buf);
  32.                 sprintf((char*)buf,"DHCP IP:%d.%d.%d.%d",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);        //打印子网掩码地址
  33.                 LCD_ShowString(30,190,210,16,16,buf);
  34.         }
  35.         else
  36.         {
  37.                 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地址
  38.                 LCD_ShowString(30,130,210,16,16,buf);
  39.                 sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.ip[0],lwipdev.ip[1],lwipdev.ip[2],lwipdev.ip[3]);                                                //打印动态IP地址
  40.                 LCD_ShowString(30,150,210,16,16,buf);
  41.                 sprintf((char*)buf,"Static GW:%d.%d.%d.%d",lwipdev.gateway[0],lwipdev.gateway[1],lwipdev.gateway[2],lwipdev.gateway[3]);        //打印网关地址
  42.                 LCD_ShowString(30,170,210,16,16,buf);
  43.                 sprintf((char*)buf,"Static IP:%d.%d.%d.%d",lwipdev.netmask[0],lwipdev.netmask[1],lwipdev.netmask[2],lwipdev.netmask[3]);        //打印子网掩码地址
  44.                 LCD_ShowString(30,190,210,16,16,buf);
  45.         }       
  46. }

  47. int main(void)
  48. {
  49.     u16 i=0;
  50.    
  51.     Write_Through();                //开启强制透写!
  52.     MPU_Memory_Protection();        //保护相关存储区域
  53.     Cache_Enable();                 //打开L1-Cache
  54.    
  55.     HAL_Init();                                        //初始化HAL库
  56.     Stm32_Clock_Init(432,25,2,9);   //设置时钟,216Mhz
  57.     delay_init(216);                //延时初始化
  58.         uart_init(115200);                        //串口初始化
  59.         usmart_dev.init(108);                     //初始化USMART
  60.     LED_Init();                     //初始化LED
  61.     KEY_Init();                     //初始化按键
  62.     SDRAM_Init();                   //初始化SDRAM
  63.     LCD_Init();                     //初始化LCD
  64.     PCF8574_Init();                 //初始化PCF8574
  65.     my_mem_init(SRAMIN);                    //初始化内部内存池
  66.         my_mem_init(SRAMEX);                    //初始化外部内存池
  67.         my_mem_init(SRAMDTCM);                    //初始化DTCM内存池
  68.     POINT_COLOR = RED;                
  69.         LCD_ShowString(30,30,200,16,16,"Apollo STM32F4/F7");
  70.         LCD_ShowString(30,50,200,16,16,"Ethernet lwIP est");
  71.         LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
  72.         LCD_ShowString(30,90,200,16,16,"2016/7/19");
  73.     TIM3_Init(1000-1,1080-1);       //定时器3初始化,定时器时钟为108M,分频系数为1080-1,
  74.                                     //所以定时器3的频率为108M/1080=100K,自动重装载为1000-1,那么定时器周期就是10ms
  75.         while(lwip_comm_init())         //lwip初始化
  76.         {
  77.                 LCD_ShowString(30,110,200,20,16,"LWIP Init Falied! ");
  78.                 delay_ms(500);
  79.                 LCD_ShowString(30,110,200,16,16,"Retrying...       ");
  80.         delay_ms(500);
  81.         }
  82.         LCD_ShowString(30,110,200,20,16,"LWIP Init Success!");
  83.         LCD_ShowString(30,130,200,16,16,"DHCP IP configing...");  //等待DHCP获取
  84. #if LWIP_DHCP   //使用DHCP
  85.         while((lwipdev.dhcpstatus!=2)&&(lwipdev.dhcpstatus!=0XFF))//等待DHCP获取成功/超时溢出
  86.         {  
  87.                 lwip_periodic_handle();        //LWIP内核需要定时处理的函数
  88.         }
  89. #endif
  90.         show_address(lwipdev.dhcpstatus);        //显示地址信息
  91.         while(1)
  92.         {
  93.                 lwip_periodic_handle();        //LWIP内核需要定时处理的函数
  94.         delay_us(200);
  95.         i++;
  96.         if(i==2000)
  97.         {
  98.             i=0;
  99.             LED0_Toggle;
  100.         }
  101.         }                                                                                 
  102. }
复制代码

所有资料51hei提供下载:
网络实验1 LWIP无操作系统移植.rar (1.77 MB, 下载次数: 39)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:396515 发表于 2019-8-25 09:52 | 只看该作者
谢谢分享,希望多发详细资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表