標(biāo)題:
STM32 LWIP無(wú)操作系統(tǒng)移植源碼
[打印本頁(yè)]
作者:
shorts
時(shí)間:
2018-11-14 09:35
標(biāo)題:
STM32 LWIP無(wú)操作系統(tǒng)移植源碼
文件見(jiàn)下
單片機(jī)源程序如下:
#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獲取到的地址
// 其他 顯示靜態(tài)地址
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]); //打印動(dòng)態(tài)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]); //打印網(wǎng)關(guān)地址
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]); //打印子網(wǎng)掩碼地址
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]); //打印動(dòng)態(tài)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]); //打印網(wǎng)關(guān)地址
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]); //打印子網(wǎng)掩碼地址
LCD_ShowString(30,190,210,16,16,buf);
}
}
int main(void)
{
u16 i=0;
Write_Through(); //開(kāi)啟強(qiáng)制透寫(xiě)!
MPU_Memory_Protection(); //保護(hù)相關(guān)存儲(chǔ)區(qū)域
Cache_Enable(); //打開(kāi)L1-Cache
HAL_Init(); //初始化HAL庫(kù)
Stm32_Clock_Init(432,25,2,9); //設(shè)置時(shí)鐘,216Mhz
delay_init(216); //延時(shí)初始化
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); //初始化內(nèi)部?jī)?nèi)存池
my_mem_init(SRAMEX); //初始化外部?jī)?nèi)存池
my_mem_init(SRAMDTCM); //初始化DTCM內(nèi)存池
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); //定時(shí)器3初始化,定時(shí)器時(shí)鐘為108M,分頻系數(shù)為1080-1,
//所以定時(shí)器3的頻率為108M/1080=100K,自動(dòng)重裝載為1000-1,那么定時(shí)器周期就是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獲取成功/超時(shí)溢出
{
lwip_periodic_handle(); //LWIP內(nèi)核需要定時(shí)處理的函數(shù)
}
#endif
show_address(lwipdev.dhcpstatus); //顯示地址信息
while(1)
{
lwip_periodic_handle(); //LWIP內(nèi)核需要定時(shí)處理的函數(shù)
delay_us(200);
i++;
if(i==2000)
{
i=0;
LED0_Toggle;
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
網(wǎng)絡(luò)實(shí)驗(yàn)1 LWIP無(wú)操作系統(tǒng)移植.rar
(1.77 MB, 下載次數(shù): 39)
2018-11-14 15:02 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
hawee
時(shí)間:
2019-8-25 09:52
謝謝分享,希望多發(fā)詳細(xì)資料
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1