NUCLEO-H743ZI2开发板cubemx+rtthread+MPU+lwip实现ping通
NUCLEO-H743ZI2开发板cubemx+rtthread+MPU+lwip实现ping通
在网上找了不少教程,总结出来这个文章,此处做个笔记分享给使用这个开发板的弟兄。虽然此开发板已停产,但可以举一反三。
使用了MPU后,ETH的配置变的更复杂了一些。此文章只记录PING通的步骤,原理我目前也没搞懂。
一、新建一个基于芯片的RTTHREAD项目

此处我没有使用开发板工程,基于芯片建项目,开发板的串口是串口3,调试器是ST-LINK,完成后编译测试一下,会有一个错误,如下图

找到错误处

把RT_WEAK改成rt_weak即可
第二步、配置时钟
从项目中打开CubeMX,

这个弹窗选是选否均可
我配置了外部高速时钟为400MHZ


仅做参考
配置MPU
1、配置RAM的MPU,这里不配置也可以


2、配置ETH及LWIP的收发缓存MPU,具体区域可以查阅芯片手册中的RAM分配表,当前把ETH及LWIP的内存区分配到SRAM3.

打开ETH及USART3

勾选ETH中断


不勾选生成MAIN
CUBEMX的配置工作就完成了,生成驱动代码,回到RTTHREADSTUDIO

排除cubemx生成的代码
把stm32h7xx_hal_conf.h复制到工程目录

从stm32h7xx_hal_msp.c中复制图中的两个函数到board.c最后

从CubeMX生成的main.c中复制SystemClock_Config函数到board.c最后

从CubeMX生成的main.c中复制MPU_Config函数到board.c最后,并使用INIT_BOARD_EXPORT(MPU_Config)进行初始化
替换drv_eth.h及drv_eth.c文件,文件在附件中
修改link.lds,把MPU分配的匹配写到链接文件中,该文件可以使用文本编辑器编辑

修改board.h中内存起始地址及外部时钟配置

在board.h中搜索ETH,按照步骤打开ETH开关,在main.c中实现一个phy_rest()函数

打开rt-thread的lwip协议栈及sal,根据自己电脑的网段给lwip分配一个固定IP

保存重新编译,就可以PING电脑的IP地址了。

更多推荐



所有评论(0)