
开发环境: 适用CUBE版本:STM32CubeIDE 1.9.0 及以上 stm32芯片型号:H723ZET62 c2 U% O% D5 Y& t( v 6 N# q! ]2 ~, \1 C7 w1 \ 一、配置部分3 E: w: ^. {& h (一)常规配置,RCC和SYS RCC启用外部高速时钟! ?: _5 u$ Q( N% u& M 3 L2 m( X( m( ^4 t: r- n, R ![]() 8 H! m! }3 `' R7 f' }6 Z- I (二)串口 串口的配置和代码实现本文不加以说明 $ S/ p% P- Z9 ]7 @* x( ] ![]() (三)ETH配置 MAC随意,不必和图中一样 , ^: m; s9 O- }$ t* q& } ![]() ) k" I0 ]8 ?& v1 J6 _! R (四)LWIP(重点来了)) E7 O0 b6 V) D9 I 首先是LWIP的常规配置,设置IP,其他默认。 : B+ F; C6 B; n! L7 s0 G$ q4 | ![]() 4 E' K1 d6 r1 M/ S, c 1 N; T! v4 o: I$ G6 L 排坑一:H723系列不同于H7系列,官方库默认配置是0x30044000,我相信有不少朋友试过:代码编译正常,烧录正常,但是代码一执行就进入Handler。这是因为H723的内存不同于其他H7系列。H723的RAM_D2的地址范围是0x30000000~0x30008000,而其他的H7空间比这个大得多。 % N/ b9 N+ ?6 r) e3 _+ j& U5 @ ![]() 然后注意LWIP_NETIF_LINK_CALLBACK(检测网线插拔的)要使能就行,其他配置默认 Q, e7 T% g6 W# l( d/ C7 r ' e _- _0 H" |5 ?2 q E ![]() - ]- o0 u: [2 G$ P 排坑二:你实际用的PHY不一定是LAN8742,但官方配置就是默认且必须选择LAN8742,恶心死我了,所以到时要去修改它源码的PHY地址,后面会说到在哪里改。 . E1 `0 W& }0 Q ![]() - j1 e7 ?& ~" _' Z' M( L3 E 然后这里也默认就行0 f" K- p l4 `, {/ X ![]() 9 _5 J, P$ V2 m; R X) R1 w (五)PHY的复位引脚配置 我看很多教程都没详细写这一步,经常不知道这个复位是哪来的,实际上是必要的,除非硬件上设置了自动复位。设置一个引脚为输出模式,常态高电平。(具体哪个是复位引脚要看你们自己的硬件设计) 6 \7 }1 M! G% Z' B( ~7 l6 F ![]() 并且常态设置为高电平/ z1 T3 e* c! w: ]( G& j . d- o6 t/ B* u' f5 |! n* ~ ![]() 0 L) R" O3 i9 U Z* i2 ?+ U% R' }$ n5 a (六)MPU配置7 F' ^8 x+ Y: R- w$ T( \5 Z% D7 b/ s 排坑三:H7系列的芯片想用LWIP必须配置MPU,而H723的配置与其他H7系列又有些不同,但哪里不同不需要管了,按我下面配置就完事0 n6 S% c1 T1 i0 ]5 S; n 3 r! p; K; I$ S* Y$ V$ u& { ![]() * A' d1 i+ {! @9 {- j/ Y 就这两个% F2 | h, d. e! N9 X7 d+ b , w( z0 A( a0 L% C/ W/ d. I- x6 H ![]() $ g- j6 Q% [) h (七)时钟树配置 这个没啥好说的,常规操作。 ![]() ; h' Y9 a. ^" j& o1 X (八)生成代码9 ~* f1 b7 V0 k$ y% G. G o 这里可以改大点 . Y1 _8 Y7 z4 b8 w4 Q ![]() % z3 @3 ^* R; h) j3 U 然后勾选划分模块 ![]() * z# u& K. o. y# y 保存后就可以生成代码了。后面来到代码部分:( f ]) F2 e4 W7 R 8 l" n/ t8 }* e1 G 二、代码部分8 W) N! w2 i* x (一)main函数的修改. A; `' y, T- ] K- w! y+ x 使能D2SRAM1时钟:* T# }5 x# P) |$ v0 I: N ![]() # }$ |! r: b/ g6 k 后面再加上这几行,清空DVache和PHY复位( K6 E* {' l; T9 v$ D ![]() & P. N+ V/ U( ~6 k) K. A 当然还有MX_LWIP_Process(),加在循环里面5 I J w$ o$ G8 l8 @1 m ![]() # q6 e' K. q) Y9 w 8 O$ z& a# Y; S% j- d. j6 T, Y (二) 修改phy地址4 C) M! t+ a# k 因为我用的phy地址是0x1,所以需要修改才能用,在这里修改: / }; W& g4 r! `! F! p! v | ![]() * k; X0 y; H2 U1 [ 找到函数LAN8742_Init(lan8742_Object_t *pObj) 在这个位置,强行修改phy的地址为0x1,很不好的是如果重新配置了ioc生成代码,又要重新在这里添加修改 ![]() 3 b, |$ i, b: U2 d# h- Z0 f (三)修改ld文件 y+ V1 {6 ?, v" O 很多人都不知道要改这里,少了这里不管怎么样配置都无法正常使用以太网,巨恶心,就是这个文件:0 J" z1 W3 u/ ]. E - v5 ^ @% `+ C/ u1 P5 z2 i' o ![]() , f+ B" R& y+ o5 N: R 拉到最下面的这个位置,添加以下代码(目的是将lwip的内存放进RAM_D2里面):5 Q7 K1 f' g4 l) v9 r2 o `$ U B4 p5 n8 A. N ![]() 6 W! P {# j# L- E* j 到这里,所有的配置就完成了,可以编译烧录,尝试ping网络: ' ^- M# e' ?+ k1 I' @/ F ![]() 9 L; E, P6 x7 g' o8 t 搞定。 ———————————————— 版权声明:青云客_Hugh 2 [. V& a% U$ ^3 A/ N: S $ J o& W7 I0 B3 ?3 f7 ]) b |
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享4-使用MVP架构从硬件外设读取数据并显示到图形界面、从图形界面发送指令控制硬件外设
【2025·STM32峰会】GUI解决方案实训分享3-搭建空白TouchGFX例程并实现简单的功能(含硬件部分的串口打印)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
【2025·STM32峰会】+TouchGFX实现动态进度显示以及界面切换
【2025·STM32峰会】+使用TouchGFX快速创建GUI
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
实战经验 | 关于STM32H7使用LL库生成ADC代码工作异常问题说明
实战经验 | 关于STM32H745的MC SDK电机控制工程问题的解决办法
【H745I GUI】1.GreenHouse 灯光控制