⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 STR710底层驱动、操作系统源码
💻 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(&ethif, &ipaddr, &netmask, &gw,
		NULL, ethernetif_init, ip_input);	// 建立LwIP网络界面
	netif_set_default(&ethif);				// 设为默认网络界面
	netif_set_up(&ethif);					// 启动网络界面

	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(&ethif);		// 是,将数据包交给LwIP处理
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -