(GCC)从零开始的ETH开发--STM32F407ZGTX

news2024/11/23 21:36:47

开发环境:

windows10

软件:

STM32CubeMX最新版本:

gcc工具链:

vscode 

硬件:

STM32F407ZGT6开发板,ETH原理图:

​ 

根据硬件可知MAC和PHY之间的接口类型为RMII,且PHY使用的外部晶振,这种情况下不需要单片机给PHY芯片提供时钟,而是由PHY的REF-CLK引脚给单片机的MAC控制器提供一个时钟用于同步,此时单片机MAC控制器和PHY芯片的时钟其实都来自于PHY的外部晶振。(还有一种方式是PHY芯片不使用外部晶振,而是单片机给它提供时钟)

 1.STM32CubeMX生成代码

第一步首先用CubeMX生成开箱即用的代码,验证硬件功能是正常的。

打开cubemx,新建工程:

选择自己使用的芯片,双击进入:

  

先配置系统时钟,选择使用外部时钟HSE,类型是石英或者陶瓷晶振:

  

再配置sw调试接口:

  

然后可以配置时钟:

  

  

只需修改HSE的频率和想要设置的主频大小,回车后会自动配置。

接着配置引脚:

在右下角输入搜索的引脚号,对应的引脚就会闪烁,然后点击引脚选择功能:

  根据自己的原理图依次设置完引脚后, 注意复位引脚选择output就可以了:

 设置完成后可以在GPIO里查看:

此时因为ETH功能还没使能,右侧引脚图上的引脚都还是黄色:

 当把ETH使能后引脚才会变成绿色:

设置完成后可以看到右边引脚视图的引脚都变成绿色:

在ETH的configuration里可以设置MAC地址,接收缓存的大小和接收模式,笔者建议都先不用改,注意提示,如果使用polling mode是不支持freertos的:

我们一开始测试先不用freertos,仅仅使用LWIP即可:

因为这里使用的芯片是LAN8720,所以直接选择了LAN8742,注意如果这里不选的话生成的文件中会少ETH引脚的初始化,所以无论你用的什么PHY芯片都可以先选择上。

再有就是一开始为了测试可以先把dhcp关掉,我们直接用静态IP测试:

到这一步如果引脚配置没问题,ETH基本功能已经可以使用了,剩下的就是生成代码:

最后点击右上角的生成:

使用vscode打开代码,生成的代码需要修改两个地方:

1.把Lwip处理添加到main的while循环:

注意,这个函数其实只有在不使用任何RTOS的时候才添加。

2.添加对PHY芯片的复位

因为复位引脚是单独的一个输出GPIO,并不属于ETH标准接口的一部分,所以需要我们自己设置和添加:

修改完成后,直接在终端里make,这里官方生成的工程有一个bug,在makefile里,有一个文件被添加了两次,所以会导致报一个重复定义的错误:

只需要删除掉其中一个就可以(如果没有这个bug请跳过):

最终编译完成结果是:

还要注意一点,如果单单修改头文件后再次make并不会重新编译,此时需要重新make clean后再make,但是windows下的powershell的rm指令和ubuntu不太一样,所以make clean会报错,这时可以手动在终端输入rm ./build/即可。build文件夹是makefile默认指定的生成文件夹。

2.代码下载与调试

vscode里面下载debug用的插件:

创建启动文件:

选择刚才下载的插件:

在打开的文件中输入:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [  
        {
            "name": "Cortex Debug-jlink",
            "cwd": "${workspaceRoot}/",
            "executable": "${workspaceFolder}/build/STM32F407ZGT6.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "jlink",
            "device": "STM32F407ZG",
            "interface": "swd",
            "runToEntryPoint": "main",
            "showDevDebugTimestamps": true,
        },
        {
            "name": "Cortex Debug-stlink",
            "cwd": "${workspaceRoot}/",
            "executable": "${workspaceFolder}/build/STM32F407ZGT6.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "device": "STM32F407ZG",
            "interface": "swd",
            "configFiles": [
                "interface/stlink-v2.cfg",
                "target/stm32f4x.cfg",
            ],
            "runToEntryPoint": "main",
            "showDevDebugTimestamps": true,
        }
    ]
}

注意根据实际修改:

启动后会停在main函数,直接点击继续运行即可,然后使用其他设备设置在同个网段,这里407设置的IP是192.168.1.123,外接设备笔者设置的是192.168.1.120,ping的结果如下:

到这里,我们可以判断开发板的硬件是正常的。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539885.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【文老师软考数据库】(全)

目录 第一章 计算机系统基本知识 1.1 计算机系统 1.1.1 计算机硬件组成 1.1.2 中央处理单元 1.1.3 数据表示 1.1.4 校验码 1.2 计算机体系结构 1.2.1 体系结构分类 1.2.2 指令系统存 1.2.3 储系系统 1.2.4 输入/输出技术 1.2.5 总线结构 1.3 可靠性、性能、安全 …

Win10系统为什么又提示重装打印机驱动?

明明没干嘛,Win 10系统却提示需要重新安装打印机驱动程序。驱动人生就来说说Win10重新安装打印机驱动程序的原因及解决方法: 一般来说,如果用户更新了Win 10的操作系统,可能导致之前的打印机驱动错误或缺失,这时候就需…

运行KT001小车问题汇总

运行KT001小车问题汇总: Q: 在安装ros的时候,出现这样的问题是因为什么,是镜像文件里边缺少东西了吗,可以怎么解决? A: 导入的是vmk配置文件,缺少iso镜像文件,不影响ros的运行。 Q: 编辑好这个…

Android ANativeWindow 渲染画面

ANativeWindow 是 Android NDK(Native Development Kit)提供的一个C/C编程接口,用于与底层的图形系统进行交互,实现图像渲染和处理等功能。 使用方法:上层用 SurfaceView,传递 SurfaceView 的 Surface 给 n…

ChatGPT的插件能用了,每月 20 美元的实习生真香

文章目录 开启插件并使用其他补充缺点和不足总结 哈喽嗨!你好,我是小雨青年,一名 追赶 AI 步伐的程序员。 自从上周 OpenAI 官宣了即将开放插件给 Plus 用户以来,这三天我就每天都会刷新ChatGPT 设置页面。 直到今天早上&#x…

SolVES模型应用(生态系统服务社会价值模型)

生态系统服务是人类从自然界中获得的直接或间接惠益,可分为供给服务、文化服务、调节服务和支持服务4类,对提升人类福祉具有重大意义,且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目(Millennium Ecosystem Asse…

思迈特软件Smartbi荣登“2023未来银行科技服务商100强”

近日,中国科学院《互联网周刊》、eNet研究院联合发布了“2023未来银行科技服务商100强”企业榜单。思迈特软件以“商业智能BI产品”凭借在金融科技创新的独特优势及在银行数字化转型实践中的卓越成就荣耀上榜。 据了解,“未来银行科技服务商100强”榜单&…

SQL删除重复的记录(只保留一条)-窗口函数row_number()

文章目录 一、关于mysql表中数据重复二、聚合函数min(id)not in二、窗口函数row_number()四、补充:常见的窗口函数 一、关于mysql表中数据重复 关于删除mysql表中重复数据问题,本文中给到两种办法:聚合函数、窗口函数row_number()的方法。 (注…

ffmpeg-mpv配置详解04

mpv.conf 格式详解 存放位置 windows下 Roaming\mpv linux下在.conf/mpv # mpv conf ################################################################################ # 记忆播放[退出时记住播放状态、音量、播放速度、位置等] save-position-on-quit # 播放状态保存位置…

运行时栈帧结构与方法调用

1 运行时栈帧结构 Java虚拟机以方法作为最基本执行单元,“栈帧”则是用于支持虚拟机进行方法调用和方法执行背后的数据结构。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 1.1 局部变量表 局部变量表的容量以变量槽为最小单位。 Java…

强化学习:贝尔曼方程(Bellman Equation)

∗ ∗ 重点:状态值、贝尔曼方程 ∗ ∗ **重点:状态值、贝尔曼方程** ∗∗重点:状态值、贝尔曼方程∗∗ return评估策略 在前面概念介绍中,我们知道了可以用 return 来评估一个策略的好坏。如图,有三个不同的策略&…

线性插值提高DDS相位分辨率

DDS(Direct Digital Synthesizer)即直接数字频率合成技术,主要由正弦查找表与控制器组成,通过控制器给出的相位,在正弦查找表中查找对应的正余弦值并予以输出。通过多个 DDS 信号的组合,可以进一步构建出 A…

【源码解析】Disruptor框架的源码解析

Disruptor初始化 初始化Disruptor实例 //单线程模式&#xff0c;获取额外的性能 Disruptor<MessageModel> disruptor new Disruptor<>(factory, bufferSize, executor,ProducerType.SINGLE, new BlockingWaitStrategy());创建RingBuffer实例 Deprecatedpublic D…

Midjourney|文心一格prompt教程[Text Prompt(上篇)]:品牌log、App、徽章、插画、头像场景生成,各种风格选择:科技风、运动风

Midjourney|文心一格prompt教程[Text Prompt&#xff08;上篇&#xff09;]&#xff1a;品牌log、App、徽章、插画、头像场景生成&#xff0c;各种风格选择&#xff1a;科技风、运动风 1.撰写 Text Prompt 注意事项 Midjourney 跟 ChatGPT 在 prompt 的使用上有很多不一样的地…

怎么做好媒体邀约

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好 要做好媒体邀约&#xff0c;以下是一些关键步骤和建议&#xff1a; 1. 制定媒体邀约方案&#xff1a;首先&#xff0c;确定您希望邀约的目标媒体。了解他们的受众、内容定位和报道风格&#xff0c;确保与您的品牌和目标受众…

ChatGPT 的工作原理:深入探究

本文首发于微信公众号&#xff1a;大迁世界, 我的微信&#xff1a;qq449245884&#xff0c;我会第一时间和你分享前端行业趋势&#xff0c;学习途径等等。 更多开源作品请看 GitHub https://github.com/qq449245884/xiaozhi &#xff0c;包含一线大厂面试完整考点、资料以及我的…

opencv实践项目-图片拼接之缝合线算法

目录 1. stitcher_detail执行过程2. 源码3. stitching_detail 程序接口介绍4. 执行5. 结果图 1. stitcher_detail执行过程 stitcher_detail是opencv官网提供的一个用于多福图像拼接的Demo&#xff0c;其主要过程如下&#xff1a; 1.输入待拼接图像集合&#xff1b;2.分别对每幅…

Jetson Nano调试记录:机电设备控制

边缘应用中,机电控制是一项非常重要的能力。 当我们的智能设备在远端环境中,根据所识别的状况变化去执行应对措施,更大程度度地降低对人为操作的依赖,这些都是能产生更大经济效益的应用,包括无人驾驶车、自动机械手臂等等。 实际工业应用场景中的控制元件是非常多样化的,…

惠普暗影精灵5 super 873-068rcn怎样用u盘重装系统win10

当我们的戴尔电脑出现问题的时候&#xff0c;无法进入系统要怎么重装系统win10修复呢?比较常用的就是借助u盘重装系统win10&#xff0c;需要用到装机工具。下面就给大家详细介绍下戴尔电脑怎样用u盘重装系统win10教程。 工具/原料&#xff1a; 系统版本&#xff1a;windows1…

LSTM-理解 Part-3(LSTM Networks)

之前博客中有涉及前两部分的介绍&#xff1a; 第一部分LSTM-理解 Part-1&#xff08;RNN&#xff1a;循环神经网络&#xff09; 第二部分LSTM-理解 Part-2&#xff08;RNN的局限性&#xff09; 这是其中的第三部分&#xff0c;讲解 LSTM Networks。 LSTM Networks 长短期记忆网…