
开发环境:9 R: L- D' y: d 适用CUBE版本:STM32CubeIDE 1.9.0 及以上- \7 ]5 k! s/ C( |: s1 {% @ stm32芯片型号:H723ZET63 h8 `' M7 ^. D! p6 c 一、配置部分9 g7 `6 a6 }' t: s2 e (一)常规配置,RCC和SYS RCC启用外部高速时钟 ![]() ; |( g! [( u, E. H# I (二)串口 串口的配置和代码实现本文不加以说明+ J& v i, d- ~0 m! f1 ^( O ![]() $ L% R. D& P( u (三)ETH配置 MAC随意,不必和图中一样 ) s( D% Q3 d# p+ P9 Q ![]() 5 n) _) C) U+ X8 g/ ^) J (四)LWIP(重点来了) 首先是LWIP的常规配置,设置IP,其他默认。 p$ M9 \+ O4 Z6 ~4 u+ c) t ![]() 排坑一:H723系列不同于H7系列,官方库默认配置是0x30044000,我相信有不少朋友试过:代码编译正常,烧录正常,但是代码一执行就进入Handler。这是因为H723的内存不同于其他H7系列。H723的RAM_D2的地址范围是0x30000000~0x30008000,而其他的H7空间比这个大得多。 * S" \7 {) f2 ~& W$ M, `& w ![]() 0 r& }# O( H" p$ ~4 n2 Y. O* w 然后注意LWIP_NETIF_LINK_CALLBACK(检测网线插拔的)要使能就行,其他配置默认 ) n8 ?# Q; s0 u8 [ ![]() 1 `, `; w/ c* l4 W: ~" v# m 排坑二:你实际用的PHY不一定是LAN8742,但官方配置就是默认且必须选择LAN8742,恶心死我了,所以到时要去修改它源码的PHY地址,后面会说到在哪里改。, Q' _+ e& m* J0 d( z/ a ![]() 然后这里也默认就行+ v O& }& Q" D+ ~" l# n $ T6 P. X" ~$ w" C ![]() ' I' y) M# o' ?% ^ (五)PHY的复位引脚配置 我看很多教程都没详细写这一步,经常不知道这个复位是哪来的,实际上是必要的,除非硬件上设置了自动复位。设置一个引脚为输出模式,常态高电平。(具体哪个是复位引脚要看你们自己的硬件设计)( \. y: b. }! G4 d7 C 3 ?1 @6 k d$ _8 y ![]() 并且常态设置为高电平 ![]() 8 q6 R& j3 ]6 V, O (六)MPU配置 排坑三:H7系列的芯片想用LWIP必须配置MPU,而H723的配置与其他H7系列又有些不同,但哪里不同不需要管了,按我下面配置就完事 0 C- F& x" H; Y) g% K2 S( Z0 M4 w5 N ![]() & V" \( G& L0 l9 c2 v 就这两个% H8 ]2 x; J9 X' b+ E ) e( ~7 R. J6 s: D0 ~+ b7 B ![]() (七)时钟树配置0 {1 x* ?2 a% n3 f. E 这个没啥好说的,常规操作。 ![]() (八)生成代码 这里可以改大点 " q3 ~9 W& y. F' k8 a ![]() 然后勾选划分模块 6 B) _4 r& Z7 G4 B0 |7 b ![]() 保存后就可以生成代码了。后面来到代码部分: : ]' m/ S; t" c) e$ r6 o 二、代码部分2 `) I1 q. O1 u, P6 X (一)main函数的修改 使能D2SRAM1时钟:( g2 G# b" n7 u( C/ T$ S ![]() 后面再加上这几行,清空DVache和PHY复位3 j; i; [: X/ H3 b 6 x, L5 ^, O' r' P/ ?, ~ ![]() 当然还有MX_LWIP_Process(),加在循环里面6 V+ D( |% K& p5 d" c3 U6 N0 e ![]() (二) 修改phy地址 因为我用的phy地址是0x1,所以需要修改才能用,在这里修改: ![]() ' T5 s' y$ i8 k) _# G: N " }7 R0 X* ?6 T0 m' P 找到函数LAN8742_Init(lan8742_Object_t *pObj)1 U) y' b/ { B8 t 在这个位置,强行修改phy的地址为0x1,很不好的是如果重新配置了ioc生成代码,又要重新在这里添加修改# X) M! F/ K) h& b 9 m; v: E; q5 w! P7 ? ![]() (三)修改ld文件 很多人都不知道要改这里,少了这里不管怎么样配置都无法正常使用以太网,巨恶心,就是这个文件: l0 j6 S) t. p h. X ![]() 9 j1 E3 y& l; } 拉到最下面的这个位置,添加以下代码(目的是将lwip的内存放进RAM_D2里面):0 W3 C9 i+ v3 t % M8 x& i) T4 |5 }% s ![]() / j. k y/ o1 }- U 到这里,所有的配置就完成了,可以编译烧录,尝试ping网络: 3 _% Q6 Z* c& W2 z8 R9 g- u4 C/ x ![]() 搞定。; i( q9 H# R: N# [+ k ————————————————/ s1 \7 z- x9 d" E" X 版权声明:青云客_Hugh6 x& ?) }. [- A* n+ e/ H9 U0 z; [ 5 W$ ?" Z! I* Z" j |
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA
有奖预约 | STM32H7R7基于RT-Thread RTOS的智能终端GUI解决方案
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
STM32H745I-DISCO串口打印
【STM32H745I-DISCO】TouchGFX探索——3、触屏滑屏操作与中文显示
TouchGFX软件下载及使用
【STM32H745I-DISCO】TouchGFX探索——2、照葫芦画瓢
STM32H745I-DISCO硬件信号为空,M4、M7对于硬件信号的优先性判断