首先感谢与非网和ST社区组织的这次以太网在线培训活动,而我有幸申请到了一块STM32F769I-DISCI的开发板,而我也在培训的当天,听了一整天的培训内容,虽然过程当中也有其它事走开了。总的来说,培训活动做得还不错,不用去现场也可以听到看到一些平时上课的内容。由于以太网涉及到的知识面比较广泛,而我也是初次接触这方面,所以还是了解的不够深刻,还需要强化学习。 由于官方的例程Ethernet Training Hands on,下载到板上总是不能PING得通,分析了很久代码也不知道是那里有问题。所以没有拿官方的例程做实验。自己用STM32CUBEMX重新建立了个KEIL的工程,这下没问题了。建立工程参考小破的帖子: https://www.stmcu.org.cn/module/forum/thread-609819-1-1.html【实战经验】从零开始使用 CubeMX 创建以太网工程 先上在线培训课的照片: 不得不说,STM32CUBEMX是个非常好用的软件,生成的代码几乎不用修改就能使用了。接下来说说利用STM32CUBEMX建立以太网工程的过程: 新建工程,选择Board Selector,选择STM32F769DISC1,双击" o4 h. `2 ~; Z6 ^; d ETH-MODE选择RMII,打开LWIP。2 [7 R9 d" Z, Q) q1 Y9 {6 K 时钟选项是已经自动配置好了,不用管。4 f$ K! E1 Y) c' O; z 配置选项点击ETH,在Parameter Settings页面,修改MAC地址为:02:00:00:00:00:00,修改PHY地址为0.其它保持默认。' \1 K. f6 E( ^( c8 f' w$ W 在LWIP Configuration页面,关闭DHCP,由于我不用路由,直接是开发板连到笔记本的网口,所以这个选项直接关闭,手动指定静态的IP地址。 网口的引脚都自动配置好了。真方便。 直接生成KEIL5工程。 加入tcp_echoserver.c文件,功能引用小破的:4 X: ?) N" Z/ B/ D& U 1.新建tcp_echoserver.c文件,在tcp_echoserver.c里要做下面这几件事情:. U6 h! a/ y, f8 ~. ]' B 1)新建一个tcp_echoserver_pcb(调用tcp_new函数);7 g6 x, ~; V" W. [7 Z- L, t3 ]# \5 J 2)将新建的tcp_echoserver_pcb与要监听的端口绑定(调用tcp_bind函数)9 z ?- U: T7 Z" Y5 X; \# {/ S 3)转成监听状态(调用tcp_listen函数)2 ^4 W9 |; W# c6 y, q8 _ I: V1 K% @ 4)注册回调函数tcp_echoserver_accept,当有新连接建立后会调用该函数(调用tcp_accept函数)1 t! ^2 S' x' T 5)注册回调函数tcp_echoserver_recv,当该连接接收到数据后会调用该函数(调用tcp_recv函数)# B1 D7 w3 L$ d 6)完成tcp_echoserver_recv函数,在该函数内,将收到的数据再发出去。 工程编译没错。下载到开发板。用网线将电脑与开发板连接起来。把电脑的本地连接,改为与开发板的IP地址同一IP段。4 x6 E7 k ~8 k1 _ 打开网络调试软件,PING 192.168.0.10,已经连接上了。% _7 | {4 [6 [- d 打开TCP连接,从电脑通过TCP发送给开发板数据,开发板又发回给电脑,通讯正常。至此,配置实验完成。 总结: 以太网是一个比较复杂的协议,只有配合官方的例程修改,再加上STM32CUBEMX软件,就能很快的能开发出自己的应用,但也感觉到,不了解底层的软件,还是不能很好的应用。而在线培训的内容也似乎讲得太快了。内容上大多是略过一下。还有声音、图像方面也不是很好。很期待下一次的培训能够做得更好,内容上更加详细一点。 B: D+ S$ \$ c. c8 r. V/ |8 _+ y& _ 下面放上工程文档: |
原来下载的IAR有问题,后来重新下了一个就没事了。不过发觉keil更习惯使用
嗯,用起来顺手就好~
端口不对。