Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
LWIP
RT-Thread Studio
STM32H750
关于STM32H750结合RT-Thread Studio使用LWIP问题剖析
发布于 2021-12-23 15:23:58 浏览:1233
订阅该版
移植环境:RT-THREAD Studio 编译环境:MDK5 系统版本:rt thread 4.0.3 LWiP版本:2.0.2 硬件环境:野火STM32H750开发板 PHY:LAN8720A 此前需要感谢论坛的各位大佬,分享了关于ART-PI开发板的移植LWIP的教程,此次的成功都是站在巨人的肩膀上😘😘。关于各位大佬的文章我就不放出处了,论坛里面搜索ART-PI关键字有很多关于这方面的文章。 好了接下来我们谈谈正题,关于野火开发板STM32H750基于LAN8720A移植LWIP的详解,如有错误请各位大佬指正。驱动的配置,和一些配置过程在这篇帖子里面,也是笔者移植完成的,关于里面的出现的问题是笔者的开发板硬件的问题现在已经解决。https://club.rt-thread.org/ask/question/434046.html 接下来谈谈关于ART-PI开发板的工程移植到野火STM32H750上的一些改动,关于硬件引脚的改动void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)函数的改动: ```c static void ETH_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* 使能端口时钟 */ ETH_MDIO_GPIO_CLK_ENABLE(); ETH_MDC_GPIO_CLK_ENABLE(); ETH_RMII_REF_CLK_GPIO_CLK_ENABLE(); ETH_RMII_CRS_DV_GPIO_CLK_ENABLE(); ETH_RMII_RXD0_GPIO_CLK_ENABLE(); ETH_RMII_RXD1_GPIO_CLK_ENABLE(); ETH_RMII_TX_EN_GPIO_CLK_ENABLE(); ETH_RMII_TXD0_GPIO_CLK_ENABLE(); ETH_RMII_TXD1_GPIO_CLK_ENABLE(); /* 配置ETH_MDIO引脚 */ GPIO_InitStructure.Pin = ETH_MDIO_PIN; GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStructure.Mode = GPIO_MODE_AF_PP; GPIO_InitStructure.Pull = GPIO_NOPULL; GPIO_InitStructure.Alternate = ETH_MDIO_AF; HAL_GPIO_Init(ETH_MDIO_PORT, &GPIO_InitStructure); /* 配置ETH_MDC引脚 */ GPIO_InitStructure.Pin = ETH_MDC_PIN; GPIO_InitStructure.Alternate = ETH_MDC_AF; HAL_GPIO_Init(ETH_MDC_PORT, &GPIO_InitStructure); /* 配置ETH_RMII_REF_CLK引脚 */ GPIO_InitStructure.Pin = ETH_RMII_REF_CLK_PIN; GPIO_InitStructure.Alternate = ETH_RMII_REF_CLK_AF; HAL_GPIO_Init(ETH_RMII_REF_CLK_PORT, &GPIO_InitStructure); /* 配置ETH_RMII_CRS_DV引脚 */ GPIO_InitStructure.Pin = ETH_RMII_CRS_DV_PIN; GPIO_InitStructure.Alternate = ETH_RMII_CRS_DV_AF; HAL_GPIO_Init(ETH_RMII_CRS_DV_PORT, &GPIO_InitStructure); /* 配置ETH_RMII_RXD0引脚 */ GPIO_InitStructure.Pin = ETH_RMII_RXD0_PIN; GPIO_InitStructure.Alternate = ETH_RMII_RXD0_AF; HAL_GPIO_Init(ETH_RMII_RXD0_PORT, &GPIO_InitStructure); /* 配置ETH_RMII_RXD1引脚 */ GPIO_InitStructure.Pin = ETH_RMII_RXD1_PIN; GPIO_InitStructure.Alternate = ETH_RMII_RXD1_AF; HAL_GPIO_Init(ETH_RMII_RXD1_PORT, &GPIO_InitStructure); /* 配置ETH_RMII_TX_EN引脚 */ GPIO_InitStructure.Pin = ETH_RMII_TX_EN_PIN; GPIO_InitStructure.Alternate = ETH_RMII_TX_EN_AF; HAL_GPIO_Init(ETH_RMII_TX_EN_PORT, &GPIO_InitStructure); /* 配置ETH_RMII_TXD0引脚 */ GPIO_InitStructure.Pin = ETH_RMII_TXD0_PIN; GPIO_InitStructure.Alternate = ETH_RMII_TXD0_AF; HAL_GPIO_Init(ETH_RMII_TXD0_PORT, &GPIO_InitStructure); /* 配置ETH_RMII_TXD1引脚 */ GPIO_InitStructure.Pin = ETH_RMII_TXD1_PIN; GPIO_InitStructure.Alternate = ETH_RMII_TXD1_AF; HAL_GPIO_Init(ETH_RMII_TXD1_PORT, &GPIO_InitStructure); } /** * @brief ETH MSP Initialization * This function configures the hardware resources used in this example * @param heth: ETH handle pointer * @retval None */ void HAL_ETH_MspInit(ETH_HandleTypeDef* heth) { ETH_GPIO_Config(); /* Enable the Ethernet global Interrupt */ HAL_NVIC_SetPriority(ETH_IRQn, 0x7, 0); HAL_NVIC_EnableIRQ(ETH_IRQn); /* 使能以太网时钟 */ __HAL_RCC_ETH1MAC_CLK_ENABLE(); __HAL_RCC_ETH1TX_CLK_ENABLE(); __HAL_RCC_ETH1RX_CLK_ENABLE(); } ``` 此处笔者直接拷贝的野火原来的例程,当然也可以观看野火的原理图,然后根据STM32CubeMX生成这段代码,想要有更多的游戏体验的开发友,当然可以毅然决然的选择后者,这里笔者需要抓经项目时间,所以直接复制了野火的例程。 由于野火的开发板LAN8720A的硬件复位引脚没有与单片机连接,所以需要修改复位方式使用软件复位方式的得修改drv_eth.c文件里面的static int phy_reset(void);函数如下所示: ```c static int phy_reset(void) { // 软件复位 if(HAL_ETH_WritePHYRegister(&EthHandle, LAN8720A_PHY_ADDRESS, PHY_BCR, PHY_RESET) != HAL_OK) { return HAL_ERROR; } //等待LAN8720A复位完成 HAL_Delay(PHY_RESET_DELAY); // 硬件复位 // rt_pin_write(reset_pin, PIN_LOW); // rt_thread_mdelay(50); // rt_pin_write(reset_pin, PIN_HIGH); return HAL_OK; } ``` 如果想让代码更具有观赏性,可选择用宏编译的方式注释或启动某段代码,这里笔者直接注释了硬件复位的部分。到此了移植的过程基本算完成了,但是笔者阅读了野火的移植过程,也阅读了ART-PI的工程源码,区别还是挺大的。此次算是圆满完成移植的过程,另外还想说的是RTT studio确实省下了不少时间。
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Dbug洋葱
这家伙很懒,什么也没写!
文章
1
回答
2
被采纳
0
关注TA
发私信
相关文章
1
rt_thread studio 啥时候能用呢
2
RT_Thread使用反馈帖子
3
RTT studio 下的 AT指令问题。
4
什么时候RTT Sdudio支持Ubuntu,Deepin和UOS操作系统
5
rt thread Studio 关于J-LINK下载问题
6
RT-Thread studio 调试设置问题
7
RTT-Studio 如何设置调试配置参数?
8
rt_thread studio 软件包配置
9
RT-Studio目前只能开发STM32的项目吗?
10
rtt studio 生成hex名字修改
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
SFUD
msh
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
549
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部