?? main.c
字號:
/*****************************************************************************\
* *
* LwIP移植實驗 *
* *
* 該程序移植了LwIP(一個輕量級的TCP/IP協議棧)。 *
* *
* 程序默認物理地址為:22-44-66-88-AA-CC(在g_LocalEthAddr中定義) *
* 默認IP地址:192.168.196.200 *
* 子網掩碼:255.255.255.0 *
* 默認網關:192.168.196.1 *
* 程序運行后可以響應主機的ping命令(使用ICMP協議)。 *
* *
* 另外,該程序還實現了一個簡易的HTTP服務, *
* 可以在主機上用瀏覽器查看地址http://192.168.196.200處的示例網頁。 *
* *
\*****************************************************************************/
#include "lwip/mem.h"
#include "lwip/memp.h"
#include "lwip/pbuf.h"
#include "lwip/netif.h"
#include "lwip/ip.h"
#include "lwip/tcp.h"
#include "netif/ethernetif.h"
#include "71x_lib.h"
#include "Ethernet.h"
#include "sample_http.h"
void __main(void)
{
struct netif ethif;
struct ip_addr ipaddr, netmask, gw;
#ifdef DEBUG
debug();
#endif
RCCU_Div2Config(ENABLE); // Enable DIV2
RCCU_MCLKConfig(RCCU_DEFAULT); // Configure MCLK = RCLK
RCCU_FCLKConfig(RCCU_RCLK_8); // Configure FCLK = RCLK / 8
RCCU_PCLKConfig(RCCU_RCLK_8); // Configure PCLK = RCLK / 8
RCCU_PLL1Config(RCCU_PLL1_Mul_12 , RCCU_Div_2) ; // Configure the PLL1 ( * 12 , / 2 )
while(RCCU_FlagStatus(RCCU_PLL1_LOCK) == RESET);// Wait PLL to lock
RCCU_RCLKSourceConfig(RCCU_PLL1_Output); // Select PLL1_Output as RCLK clock
// at this step the CKOUT signal should be equal to 48 Mhz
// 初始化LwIP的內部緩沖區、網絡界面
mem_init();
memp_init();
pbuf_init();
netif_init();
// TODO: 修改默認網絡配置以適應具體需要
IP4_ADDR(&ipaddr, 192, 168, 196, 200); // IP地址
IP4_ADDR(&netmask, 255, 255, 255, 0); // 子網掩碼
IP4_ADDR(&gw, 192, 168, 196, 1); // 網關
netif_add(ðif, &ipaddr, &netmask, &gw,
NULL, ethernetif_init, ip_input); // 建立LwIP網絡界面
netif_set_default(ðif); // 設為默認網絡界面
netif_set_up(ðif); // 啟動網絡界面
ip_init(); // 初始化IP模塊
tcp_init(); // 初始化TCP模塊
http_init(); // 初始化HTTP模塊
RTC_PrescalerConfig(8192);
RTC_FlagClear(RTC_OWIR);
RTC_FlagClear(RTC_AIR);
RTC_FlagClear(RTC_SIR);
RTC_FlagClear(RTC_GIR);
EIC_Init();
EIC_IRQChannelConfig(RTC_IRQChannel, ENABLE);
EIC_IRQChannelPriorityConfig(RTC_IRQChannel, 1);
EIC_IRQConfig(ENABLE);
RTC_ITConfig(RTC_SIT | RTC_GIT, ENABLE);
while(1)
{
ethbuf_len = NIC_RecvPack(ethbuf);
// 接收來自NIC的數據包
if(ethbuf_len > 0) // 有數據包被接收?
ethernetif_input(ðif); // 是,將數據包交給LwIP處理
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -