
开发环境:, n' W9 P6 Z* f 适用CUBE版本:STM32CubeIDE 1.9.0 及以上% @. x) `5 m$ W+ ^. B1 F stm32芯片型号:H723ZET6 & X9 S$ U+ M; M) R. z2 L 一、配置部分 (一)常规配置,RCC和SYS3 W. N. g: _7 w$ V( g RCC启用外部高速时钟 ![]() 8 H4 X3 l2 g& m" B3 z4 b6 ?' B. c (二)串口 串口的配置和代码实现本文不加以说明 ![]() X8 |- o8 b [; U (三)ETH配置' i/ Z- p" Z$ P8 S V, H# D& @ MAC随意,不必和图中一样* `8 o6 b5 a; D ![]() 4 D! T4 }! e6 ]0 X3 L, z (四)LWIP(重点来了) 首先是LWIP的常规配置,设置IP,其他默认。 7 w/ M" b: b: ~9 a. P! Z2 i, z ![]() 排坑一:H723系列不同于H7系列,官方库默认配置是0x30044000,我相信有不少朋友试过:代码编译正常,烧录正常,但是代码一执行就进入Handler。这是因为H723的内存不同于其他H7系列。H723的RAM_D2的地址范围是0x30000000~0x30008000,而其他的H7空间比这个大得多。/ W R; t4 ]+ ?+ q+ }. V' A ![]() 然后注意LWIP_NETIF_LINK_CALLBACK(检测网线插拔的)要使能就行,其他配置默认" c0 N: W: a; a5 p$ g$ r - ^( t* J! G" h; a c9 h2 _- u' t8 K: {( C ![]() 排坑二:你实际用的PHY不一定是LAN8742,但官方配置就是默认且必须选择LAN8742,恶心死我了,所以到时要去修改它源码的PHY地址,后面会说到在哪里改。$ x& E' K! J U) {0 ` $ w3 L# s% g+ T C ![]() 然后这里也默认就行" W& _, W( p, R5 r; b2 Q+ J 4 Q- p; f k0 P+ ^- j( k$ R) \- w ![]() ; ^% u- D2 ~" {/ a (五)PHY的复位引脚配置8 k' F+ T& `0 Q 我看很多教程都没详细写这一步,经常不知道这个复位是哪来的,实际上是必要的,除非硬件上设置了自动复位。设置一个引脚为输出模式,常态高电平。(具体哪个是复位引脚要看你们自己的硬件设计) ; Q8 I- B9 R! B9 \+ A* O8 P ![]() & S% w1 u, Y+ C- t1 n9 e 并且常态设置为高电平6 G8 R" q: f0 Y. O ![]() (六)MPU配置 排坑三:H7系列的芯片想用LWIP必须配置MPU,而H723的配置与其他H7系列又有些不同,但哪里不同不需要管了,按我下面配置就完事* [2 i+ l9 w0 g; r2 j) U ![]() 1 ~- I9 ^7 M- r& N$ g& [ 就这两个 ![]() 6 U+ a6 h% K2 S2 {; U8 S' t- n) H (七)时钟树配置' D1 A0 ~) _7 @5 V 这个没啥好说的,常规操作。2 F; z3 a }& a ![]() (八)生成代码 这里可以改大点 2 ?6 T7 Y0 x* { }" F+ R; t ![]() 然后勾选划分模块 ; E( D" m, u9 y, a1 y; n$ R ![]() 保存后就可以生成代码了。后面来到代码部分:' y9 J1 n: t J6 P 二、代码部分 (一)main函数的修改 使能D2SRAM1时钟:4 q' a2 W3 `6 t & {! Q9 L, q% W, c+ g9 M% u ![]() 后面再加上这几行,清空DVache和PHY复位3 o0 @1 Y. G2 d: Y3 F ![]() 当然还有MX_LWIP_Process(),加在循环里面1 G0 Z* J+ D% y& n# e8 J( ^) o 1 A. b2 C9 c: G% `/ g& v ![]() ! I& J6 X# t8 v $ ~0 n+ Y" L: S( s5 f) c# i# B (二) 修改phy地址/ b1 y( S+ E* W 因为我用的phy地址是0x1,所以需要修改才能用,在这里修改: ![]() 找到函数LAN8742_Init(lan8742_Object_t *pObj) 在这个位置,强行修改phy的地址为0x1,很不好的是如果重新配置了ioc生成代码,又要重新在这里添加修改 ![]() " r) e' }8 `! ] F (三)修改ld文件 很多人都不知道要改这里,少了这里不管怎么样配置都无法正常使用以太网,巨恶心,就是这个文件: ![]() ' d' L4 d* s6 v/ G7 ]( D& | 拉到最下面的这个位置,添加以下代码(目的是将lwip的内存放进RAM_D2里面): ![]() 到这里,所有的配置就完成了,可以编译烧录,尝试ping网络: 4 z9 A- K3 y! ?/ h! \, I/ e ![]() 搞定。& ]! X( |: H, v ———————————————— 版权声明:青云客_Hugh) z, h0 J5 @' C2 e- V# ]$ F 3 N6 C/ m# v1 v% G7 v7 z % t$ r& F# j' {( F |
【H745I GUI】1.GreenHouse 灯光控制
【Wio Lite AI视觉开发套件】+移植TensorFlow Lite
STM32H745I-DISCO脉冲宽度调制(PWM)
STM32H745I-DISCO串口通信,输入输出
拷打cubemx【002】——自定义还需基于芯片的工程
STM32硬件结构学习
STM32中BOOT的作用
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA