STM32H750+LAN8720无操作系统移植lwip

2023-11-19

前言

本文提供移植好的工程(仅使用串口和以太网外设),见本文绑定资源



环境

STM32CubeMX: V6.8.1
STM32H7 HAL Pack: V1.11.1


硬件连接

STM32H750 GPIO定义如下:

在这里插入图片描述


LAN8720 GPIO定义如下:

在这里插入图片描述


连接方式如下:

LAN8720       <—>     STM32H750
MDIO                 ETH_MDIO
MDC                 ETH_MDC
TX0                 ETH_TXD0
TX1                 ETH_TXD1
RX0                 ETH_RXD0
RX1                 ETH_RXD1
TX-EN               ETH_TX_EN
CRS                 ETH_CRS_DV
nINT/RETCK            ETH_REF_CLK



配置STM32CubeMX

基础配置

新建项目,我这里是STM32H750VBT6

在这里插入图片描述


配置时钟,选择时钟源

在这里插入图片描述


将主频配置为最大即480MHz

在这里插入图片描述

配置MPU

使能ICACHE和DCACHE

使能MPU 选择only+disable模式,并配置两个区

这两个配置特别重要,配置有误就ping不通

在这里插入图片描述

配置以太网

配置以太网,选择RMII模式

在这里插入图片描述


修改描述符地址和buff长度

在这里插入图片描述


使能中断

在这里插入图片描述


将相关GPIO全部配置成高速

在这里插入图片描述


配置LWIP

使能LWIP并选择LAN8742平台(与LAN8720兼容)

在这里插入图片描述


取消DHCP并配置合适的固定IP

在这里插入图片描述

配置串口

使能UART1用于debug

在这里插入图片描述

生成代码

配置工程输出,这里选择的是MDK5

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

勾选MicroLIB,否则无法跑通

在这里插入图片描述


建议取消这个选项,否则编译会很慢

在这里插入图片描述

修改main函数

将main()替换为如下内容,主要修改如下:

①使能SRAM3

②运行LWIP任务

③增加串口打印

int main(void)
{
	int uart_tick = 0;
	MPU_Config();
	SCB_EnableICache();
	SCB_EnableDCache();
	__HAL_RCC_D2SRAM3_CLK_ENABLE();
	HAL_Init();
	SystemClock_Config();
	MX_GPIO_Init();
	MX_USART1_UART_Init();
	MX_LWIP_Init();

	while (1)
	{
		MX_LWIP_Process();

		if (HAL_GetTick() - uart_tick > 1000)
		{
			HAL_UART_Transmit(&huart1, "hello world!\r\n", 14, 100);

			uart_tick = HAL_GetTick();
		}
	}
}

编译成功

在这里插入图片描述

运行

成功ping通
在这里插入图片描述

串口正常打印

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32H750+LAN8720无操作系统移植lwip 的相关文章

  • 前言 在学习达梦数据库数据存储过程中有接触到行式存储和列式存储方面的内容 在此作简单的学习分享 通过本文你可以了解到行存储模式 列存储模式 它们的优缺点以及列存储模式的优化等知识 Row vs Column Oriented Databas
  • 怎样用计算机的计算器的程序员进行进制,使用系统自带计算器进行二进制运算(示例代码)...

    int x 110 int y 10 Console WriteLine x y Console WriteLine x y 想亲自算一下这种计算的时候 打开windows自带的计算器calc exe 调到 程序员计算器 模式即可 选择DE
  • 华为OD机试 - 日志限流(Java )

    题目描述 某软件系统会在运行过程中持续产生日志 系统每天运行N单位时间 运行期间每单位时间产生的日志条数保行在数组records中 records i 表示第i单位时间内产生日志条数 由于系统磁盘空间限制 每天可记录保存的日志总数上限为to
  • 详解人工智能领域重大突破:GPT-3

    2020 09 14 16 09 导语 GPT 3是自然语言处理 领域迄今为止发布出来最大的Transformer模型 超过之前的记录 微软研究院Turing LG的170亿参数 约10倍 英语原文 Exploring GPT 3 A Ne
  • 剑指 Offer 18. 删除链表的节点 -- 双指针

    0 题目描述 leetcode原题链接 剑指 Offer 18 删除链表的节点 1 双指针解法 删除值为 val 的节点分需为两步 定位节点 修改引用 定位节点 遍历链表 直到 head val val 时跳出 即可定位目标节点 修改引用

随机推荐

  • 荐读

    本文转自 链闻 ChainNews 作者 Karen 虽然区块链技术诞生至今不过短短十余年 但是东西方天然的文化差异在加密世界中同样留下了一些痕迹 当社交媒体上关于 东方区块链 只关心币价 利益和投机而只有 西方区块链 才关心底层技术的革新
  • “元宇宙”既是机遇也是挑战

    一次性看懂元宇宙 是开疆拓土还是新一轮割韭菜 众所周知 随着AI VR AR MR XR 区块链 云计算 物联网 数字孪生 量子技术 5G技术等新兴技术的快速发展 推动刚刚过去的2021年成为元宇宙元年 先是3月Robolox上市 开启了元
  • 基于Dpabi的功能连接

    1 预处理 这里预处理用Gretna软件进行 共分为以下几步 1 DICOM转NIfTI格式 2 去除前10个时间点 Remove first 10 times points 由于机器刚启动 被试刚躺进去也还需适应环境 导致刚开始扫描的数据
  • 分享一个开源免费、功能强大的视频播放器库

    99 的前端开发者都关注了这个公众号 点击上方 前端开发博客 关注并 设为星标 回复加群 自助秒进前端群 最近在开发一个前端项目 用到播放视频的功能 所以就查了下有什么前端的视频播放器库可以使用 今天来分享一下给大家 这个库的名字叫做 Pl
  • Zabbix之自定义监控MySQL主从状态和延迟

    zabbix之自定义监控MySQL主从状态和延迟 文章目录 监控MySQL主从状态 1 安装Mariadb配置主从 2 配置监控脚本 3 web界面添加监控项 4 添加触发器 5 触发验证 监控MySQL主从延迟 配置监控脚本 web界面添
  • 机器学习-knn近邻分类算法

    算法原理 本质是通过距离 欧式距离 判断两个样本是否相似 如果距离够近就认为他们足够相似属于同一类别 算法优缺点 主要参数k 标记数据周围几个数作为参考对象 需要根据数据来决定 k值越大 模型偏差大 对噪声数据不敏感 可能造成欠拟合 k值越
  • 若依文件下载

    若依文件下载 都看我的 2021 4 17 找了一圈 每一个写的简单的 还得自己完成 提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 前台代码 二 加入js代码 总结 前言 提示 若依框架的文件下载 提
  • css 让内容可滑动,css实现隐藏滚动条并可以滚动内容

    代码预览 行走在光阴里的人 谁不对初见怀揣一份美好向往和期待 谁不对初见心存一份眷恋和不舍 假如人生是一场途经 初见一定是人生路上最美的绽放 人生在世 不管你是青丝如云 还是白发如霜 当你念及 人生若只如初见 时 你的嘴角一定会不由自主地泛
  • ChatGTP套壳网站总结更新

    总结一批ChatGTP套壳网站供大家学习参考 前10个网站经过测试可用 所以套壳网站 就是使用ChatGPT提供的API与ChatGPT系统连接 使用自己的网站来实现交互展示 效果与在ChatpGPT网站上聊天是一样的 ChatGTP套壳网
  • HTC-VIVE手柄使用代码

    using UnityEngine using System Collections 检测手柄功能的脚本 这个脚本挂到手柄上 controler right 和controler left 上 public class ButtonTouc
  • java包装类&简单认识泛型

    1 包装类 在 Java 中 由于基本类型不是继承自 Object 为了在泛型代码中可以支持基本类型 Java 给每个基本类型都对应了一个包装 类型 类中比如由属性 方法 使用比较方便 1 1 基本数据类型和对应的包装类 1 2 装箱和拆箱
  • vtk使用之Mapper和actor的关联

    参考博客 VTK的Mapper Dezeming的博客 CSDN博客 vtk mapper VTK 图形进阶 vtkPolyData数据生成与显示 简 单的博客 CSDN博客 vtkpolydata 类vtkMapper及其派生类 把输入的
  • 引入微信支付Java SDK WxPayAPI_JAVA.zip

    最近需要接入微信支付 百度了很多博客 关键第一步导入微信支付提供的官方sdk就卡住了 那些博客上也没说怎么导入 以前没整过sdk 一下懵了 后来发现WxPayAPI JAVA zip解压出来的文件是个maven项目 然后直接IDEA打开这个
  • Java基础知识总结(三)

    java的代码块分类 局部代码块 比较简单 在局部位置 方法定义中 定义的 作用 限定某个变量的生命周期 构造代码块 在类的成员位置 作用 在执行构造方法之前 如果存在构造代码块 优先执行构造代码块 可以将构造方法中共性内容 放在构造代码中
  • [渗透]CVE-2020-1938/CNVD-2020-10487:Apache Tomcat AJP连接器远程执行代码漏洞

    受影响版本 Apache Tomcat 6 Apache Tomcat 7x lt 7 0 100 Apache Tomcat 8x lt 8 5 51 Apache Tomcat 9x lt 9 0 31 未受影响版本 Tomcat 7
  • 设计模式(十)装饰器模式

    装饰器模式是一种非常有用的结构型模式 它允许我们在不改变类的结果的情况下 为类添加新的功能 我们来举例说明一下 首先添加一组形状 它们都实现了形状接口 public interface Shape String getShape class
  • QT使用emit时发生内存泄露

    1 场景 在QT里面使用多线程进行编程时 子线程执行的函数里面使用了emit发生了内存泄露 2 主要原因 在使用子线程时 线程使用了join 来等待子线程完成 这样使用emit也不会发送信号 因为join 是阻塞的 必须等待当前线程完成 3
  • iOS逆向工程之App脱壳

    本篇博客以微信为例 给微信脱壳 砸壳 在iOS逆向工程中是经常做的一件事情 因为从AppStore直接下载安装的App是加壳的 其实就是经过加密的 这个 砸壳 的过程就是一个解密的过程 未砸壳的App是无法在Class dump Hoppe
  • Android多进程(一)—— 开启多进程

    Android多进程 一般情况下 一个应用程序就是一个进程 进程名就是应用程序的包名 进程是系统分配资源的基本单位 每个进程都有自己独立的资源和内存空间 1 Android开启多进程的原因 单进程分配的内存不够 需要更多的内存 早期的And
  • STM32H750+LAN8720无操作系统移植lwip

    前言 本文提供移植好的工程 仅使用串口和以太网外设 见本文绑定资源 环境 STM32CubeMX V6 8 1 STM32H7 HAL Pack V1 11 1 硬件连接 STM32H750 GPIO定义如下 LAN8720 GPIO定义如