STM32H743+CubeIDE+NO_OS_LWIP

STM32H743+LWIP+CubeIDE

一、实验环境:

  • STM32H743-NUCLEO开发板(板载LAN8742A PHY芯片)
  • CubeIDE 1.5.0
  • LWIP版本2.1.2
  • NO_OS,裸跑

二、配置

1)、首先要配置一下系统时钟Debug接口
2)、使能ICache、DCache

如果不使能DCache,则LWIP不能使用

在这里插入图片描述

3)、配置ETH接口

在这里插入图片描述

要使能ETH中断:
在这里插入图片描述

同时,CubeIDE默认的ETH接口和NECLO板子的接口不一样,需要根据原理图进行修改,同时把IO速度拉满。修改之后:

在这里插入图片描述

4)、配置LWIP

使能LWIP,并使能DHCP:

在这里插入图片描述

将对应的模块打开DEBUG使能:
并且需要在lwipops.h中define LWIP_DEBUG

在这里插入图片描述

5)、配置DEBUG串口

在这个开发板上,STLINK一个串口和H743的uart3连接,IO为:

在这里插入图片描述

波特率默认115200即可:

在这里插入图片描述

在usart.c文件中对printf进行重定义:

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

PUTCHAR_PROTOTYPE
{
	HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
	return ch;
}

注意,还需要该一处地方,才能正常串口打印输出:

在这里插入图片描述

6)、生成代码并调整修改

这是生成代码之后的目录框架:

在这里插入图片描述

在ethernetif.c文件中修改,清除DCache缓存:
在low_level_output函数中:
在这里插入图片描述
在low_level_input函数中:
在这里插入图片描述

同时,在ethernet.c文件中,定义了DMA-Buffer,要指定运行的位置(对应前面配置的MPU):

在这里插入图片描述

这个位置要在ld文件中进行指定声明(默认是没有声明的,这点坑我三天,一直跑不起来就是因为默认没有声明)

在这里插入图片描述

.lwip_sec (NOLOAD) : 
{
    . = ABSOLUTE(0x30040000);
    *(.RxDecripSection) 
    
    . = ABSOLUTE(0x30040060);
    *(.TxDecripSection)
    
    . = ABSOLUTE(0x30040200);
    *(.RxArraySection) 
  } >RAM_D2 AT> FLASH
7)、最后效果

串口打印输出内容,可以看出分配的IP地址为192.168.4.106

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

然后用电脑CMD去ping一下(要求在同一局域网内

在这里插入图片描述
链路打通!

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值