单片机源程序如下:
- /*******************************************************************************
- * 实 验 名 : 以太网应用--LWIP移植(无操作系统)
- * 实验说明 :
- * 连接方式 :
- * 注 意 : 默认使用静态IP模式,使用一根网线将开发板和电脑网络接口连接,
- 在电脑IP地址设置处手动修改为串口打印输出的远端IP和端口,然后
- 打开“5--开发工具\4. 常用辅助开发软件\网络调试助手”
- 和“串口调试助手”,将相应选择设置为实验截图所示。
- 也可通过电脑"运行+cmd"ping下,检测网络链路是否正常。
- 本实验开发板网络端为客户端,电脑为服务器。
- 如果需要使用DHCP服务器模式,可以在netconf.h文件中释放USE_DHCP宏定义,此时
- 要求电脑和开发板网口都是连接在同一路由器下,电脑端无需其他操作,最后在
- 网络调试助手和串口上设置下即可。
- *******************************************************************************/
- #include "system.h"
- #include "SysTick.h"
- #include "led.h"
- #include "usart.h"
- #include "time.h"
- #include "key.h"
- #include "stm32f4x7_phy.h"
- #include "lwip/tcp.h"
- #include "netconf.h"
- #include "tcp_echoclient.h"
- extern __IO uint8_t EthLinkStatus;
- /*******************************************************************************
- * 函 数 名 : main
- * 函数功能 : 主函数
- * 输 入 : 无
- * 输 出 : 无
- *******************************************************************************/
- int main()
- {
- u8 key;
- u8 flag=0;
-
- SysTick_Init(168);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
- LED_Init();
- USART3_Init(9600);
- KEY_Init();
- TIM4_Init(999,839); //10ms定时器
-
- printf("以太网应用--LWIP移植(无操作系统)\n");
-
- /* Configure ethernet (GPIOs, clocks, MAC, DMA) */
- ETH_BSP_Config();
- printf("\r\nPHY初始化结束\n");
-
- /* Initilaize the LwIP stack */
- LwIP_Init();
- printf("\r\nLwIP初始化结束\n");
-
- printf("\r\nK_UP : 启动TCP连接\n");
- printf("\r\nK_DOWN: 断开TCP连接\n");
-
- /* IP地址和端口可在netconf.h文件修改,或者使用DHCP服务自动获取IP
- (需要路由器支持)*/
- printf("\r\n本地IP和端口: %d.%d.%d.%d\n",IP_ADDR0,IP_ADDR1,IP_ADDR2,IP_ADDR3);
- printf("\r\n远端IP和端口: %d.%d.%d.%d:%d\n",DEST_IP_ADDR0, DEST_IP_ADDR1,DEST_IP_ADDR2, DEST_IP_ADDR3,DEST_PORT);
-
- while(1)
- {
- key=KEY_Scan(0);
- if(key==KEY_UP && (flag==0))
- {
- led1=0;
- if (EthLinkStatus == 0)
- {
- printf("connect to tcp server\n");
- /*connect to tcp server */
- tcp_echoclient_connect();
- flag=1;
- }
- }
- if(key==KEY_DOWN&& flag)
- {
- led1=1;
- tcp_echoclient_disconnect();
- flag=0;
- }
-
- /* check if any packet received */
- if (ETH_CheckFrameReceived())
- {
- /* process received ethernet packet */
- LwIP_Pkt_Handle();
- }
- /* handle periodic timers for LwIP */
- LwIP_Periodic_Handle(LocalTime);
- }
- }
复制代码
所有资料51hei提供下载:
以太网应用--LWIP移植(无操作系统).7z
(945.67 KB, 下载次数: 171)
|