LWIP网络通信Day2 配置Env、配置网络功能解决相关问题实现通信

一、目的和工具
1、选用芯片为STM32F4,网络芯片选用LAN8720A(可借助原子开发板进行学习)。
2、使用env软件配置RT_Thread环境。
3、网线一根,ulink下载器,usb接线口。
4、板子作为客户端,实现单片机和开发板的TCP网络通信。

二、env配置
env里面需要配置的东西:
>控制台:finsh、rt_kprintf、UART;
>network:stm32f4xx_eth.c、LWIP、ip
>打开接口:控制台的串口

1、finsh: 进入RT-Thread Components → Command shell → finsh shell,打开它。

在这里插入图片描述

2、rt_kprintf: 进入 RT-Thread Kernel → Kernel Device Object → Using console for rt_kprintf,打开它。

在这里插入图片描述

3、UART:在进入菜单界面就可选择 Enable UART1 (PB6/7)。

在这里插入图片描述

4、stm32f4xx_eth.c、LWIP: 进入RT-Thread Components → Network → light weight TCP/IP stack →  Enable lwIP stack,打开它。

在这里插入图片描述

5、ip:进入RT-Thread Components → Network → Network interface device →  Enable network interface device,打开它。

在这里插入图片描述

6、控制台的串口:进入 RT-Thread Components → Device Drivers → Using serial device drivers,打开它。

在这里插入图片描述

三、keil5编译调式
退出menuconfig,输入“scons --target=mdk5”编译。
在keil5中直接编译,发现报很多错误,错误及修改如下:

1、在rtconfig.h中,缺少组件和主函数初始化的宏,env配置的时候自动省略了。	

在这里插入图片描述
添加即可
/* C++ features */
#define RT_USING_COMPONENTS_INIT
#define RT_USING_USER_MAIN

2、禁用DHCP服务,我们这里是使用局域网连接。在rtconfig.h中删掉#define RT_LWIP_DHCP。

3、我们使用UART1,所以得初始化Tx、Rx引脚时注意查看芯片图。修改为PA9、10。

在这里插入图片描述
在这里插入图片描述

4、出现如下问题,勾选“魔法棒”里C/C++,勾选C99 mode。

在这里插入图片描述

5、出现“Not enough information to list load addresses in the image map”
原因:只声明了函数,却未定义函数实体。所以在这个前提下调用函数时会报这个错误。
解决方法:定义函数实体,或者取消函数调用。
本人因自己写了几个函数,在board.c和components.c里面进行逐步注释即可。

6、出现“FCARM - Output Name not specified, please check 'Options for Target - Utilities'”
原因:编译文件不正确。
解决办法:可选中不编译文件,右击不编议的文件,选择“options for file 'xxx.x'”,取消"include in target build"和“always build”。

7、编译之后,当发现右击不能跳转时,在“魔法棒”里output,勾选browse information,当然,如若编译时不想跳转,可不勾选。

8、最后修改晶振频率,原子是8M,不用修改,本人外围晶振是25M。
修改HSE_VALUE为8000000。

四、网络测试(未记录完)
程序能下载到板子,首先出现一个大问题:复位网口灯不闪烁,串口控制台ping串口出不输出IP。
原因:网口初始化失败。
解决:在xxx_eth.c的最后网络初始化中添加lwip_sys_init()函数。此函数在sys_arch.c中有定义,不知道此版本为什么编译时不自动调用。
在这里插入图片描述

最后在局域网内板子利用串口助手,电脑借助网络调试助手能相互发送消息。
因本人容易遗忘,简单记录过程,以免忘记,写得不好或不清楚,粗略参考。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值