STMCU小助手
发布时间:2022-12-16 12:00
|
开发环境:+ l8 V, h+ |/ F 适用CUBE版本:STM32CubeIDE 1.9.0 及以上 stm32芯片型号:H723ZET6* c! w8 E8 `/ ? ' e: B3 y T+ f5 ]3 \" y 一、配置部分) s/ s. ^1 C: P4 x& F (一)常规配置,RCC和SYS RCC启用外部高速时钟9 X# ^! @* y, I2 i9 I" ]
(二)串口 串口的配置和代码实现本文不加以说明* N( A+ \0 K; F4 O+ n2 S( `
) N: E2 l% n3 e) l% C (三)ETH配置 MAC随意,不必和图中一样# |! F2 ]# m5 x& t
3 L L* ]4 f7 Y# c( X- M & M1 F" h2 c/ S- E' x3 ?1 A! e. n (四)LWIP(重点来了) 首先是LWIP的常规配置,设置IP,其他默认。 3 Q$ }. x$ E4 s& f
/ k. j0 o+ D+ s( Z c 排坑一:H723系列不同于H7系列,官方库默认配置是0x30044000,我相信有不少朋友试过:代码编译正常,烧录正常,但是代码一执行就进入Handler。这是因为H723的内存不同于其他H7系列。H723的RAM_D2的地址范围是0x30000000~0x30008000,而其他的H7空间比这个大得多。 6 b. F2 M( Y: c7 c) E# |
0 L9 b0 ?2 s4 Z: ]4 _ 然后注意LWIP_NETIF_LINK_CALLBACK(检测网线插拔的)要使能就行,其他配置默认 # L v+ ]4 t9 P
2 R$ D6 Q% h0 S% H 排坑二:你实际用的PHY不一定是LAN8742,但官方配置就是默认且必须选择LAN8742,恶心死我了,所以到时要去修改它源码的PHY地址,后面会说到在哪里改。 S( v& ]% K: A7 ^9 C$ t3 U0 n " a8 W- e$ P6 r% {5 d
然后这里也默认就行0 a2 _4 a; g; m6 o$ ?7 d
0 ^/ [( z; \9 O' A! J8 j* V (五)PHY的复位引脚配置& G* K! ~4 [- d0 P' l9 f 我看很多教程都没详细写这一步,经常不知道这个复位是哪来的,实际上是必要的,除非硬件上设置了自动复位。设置一个引脚为输出模式,常态高电平。(具体哪个是复位引脚要看你们自己的硬件设计)- W( D4 K1 J% Y$ }2 y' Z 9 j r9 P+ _' k
- p* W3 z3 R: B, J8 | 并且常态设置为高电平
4 P( z8 x. Y0 v: U6 d( G2 c5 Y (六)MPU配置3 m4 u6 U2 k2 V' U. l: p 排坑三:H7系列的芯片想用LWIP必须配置MPU,而H723的配置与其他H7系列又有些不同,但哪里不同不需要管了,按我下面配置就完事0 o. z4 E1 m. u6 x( a
就这两个6 k7 ^8 W/ i9 Z5 y Z
, _5 Z6 ^5 `8 @4 O8 Q) O (七)时钟树配置7 J$ A7 G- G* d6 X: A 这个没啥好说的,常规操作。! D7 [6 q" K( P9 h7 w- i1 ~1 I0 a- Y * a+ u- M' r9 l* K5 W3 x" z
(八)生成代码; G: \* B! V( f8 D( J5 ~ 这里可以改大点8 B! m8 L+ a3 ~" S
然后勾选划分模块' H8 i, i9 z" n" G# R7 q1 g
保存后就可以生成代码了。后面来到代码部分: 二、代码部分 (一)main函数的修改 使能D2SRAM1时钟:7 G3 B v# q! N% S3 K7 } & k9 d( R8 a4 k' \
后面再加上这几行,清空DVache和PHY复位
当然还有MX_LWIP_Process(),加在循环里面2 f, V# s% u; f9 S % Y3 ~8 z! t7 Y3 I2 V+ y& E
(二) 修改phy地址6 ~% g" Z( i( H% q 因为我用的phy地址是0x1,所以需要修改才能用,在这里修改:! L6 \% {) x, ^ Z
) N" A! \, K% y, s. z, w2 u D . i R) y- M3 U7 [; M% d; l( ]- _ 找到函数LAN8742_Init(lan8742_Object_t *pObj): [4 L$ g% D# H) ]( U 在这个位置,强行修改phy的地址为0x1,很不好的是如果重新配置了ioc生成代码,又要重新在这里添加修改 & W+ E) H$ e# [5 Q/ s" _# x C
5 [! h. Q: A! Y. W* S4 G7 F 6 O5 J1 f$ z* L (三)修改ld文件 很多人都不知道要改这里,少了这里不管怎么样配置都无法正常使用以太网,巨恶心,就是这个文件: 1 r: b" v/ u* }4 H3 @
: ]: K+ {( \( K4 D$ v" d2 t: i 拉到最下面的这个位置,添加以下代码(目的是将lwip的内存放进RAM_D2里面):( c! Z# i4 H8 D
. a( d' R* Z# A0 x4 X! e. E 到这里,所有的配置就完成了,可以编译烧录,尝试ping网络:
搞定。 ————————————————$ ~/ p" |. d+ }1 I0 E: O/ K7 P' _ 版权声明:青云客_Hugh & U9 a' Q# V- b4 c1 y: T0 c4 } |
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
微信公众号
手机版
太感谢了,查了一大堆资料,看了一大堆博客,终于看这篇文章搞定了,这是唯一一个讲到修改ld文件的文章,2025了,cube的这个大坑还没修复。