2. 硬件开发环境搭建:STM32H745I-DISCO 开发板介绍、电源树分析、调试器配置(ST-LINK V3)

好,咱们正式开始动手前的最后一步——把硬件环境理清楚。很多同学拿到开发板就急着上电写代码,结果遇到诡异问题,查半天发现是跳线帽插错了,或者调试器没配置对。我早期也吃过这个亏,所以这一章咱们把 STM32H745I-DISCO 这块板子从头到尾捋一遍。

2.1 开发板整体概览

STM32H745I-DISCO 是意法半导体官方出的 Discovery 系列评估板。核心器件是 STM32H745XIH6,这颗芯片内部有两个 Cortex 核心:一个 M7(主频 480MHz),一个 M4(主频 240MHz)。说白了,这就是一块双核开发板,专门用来做多核协同开发的。

板子上集成了什么?我列一下关键外设:

  • 主控:STM32H745XIH6(BGA225 封装,2MB Flash / 1MB SRAM)
  • 调试器:板载 ST-LINK/V3(支持 SWD 和虚拟串口)
  • 存储:64MB SDRAM(MT48LC4M32B2)、16MB Quad-SPI NOR Flash(MX25LM51245G)
  • 显示:4.3 英寸 TFT LCD(带电容触摸屏,RGB 接口)
  • 音频:WM8994 音频编解码器 + 3.5mm 耳机插孔
  • 传感器:STTS751 温度传感器、LSM6DSO 六轴惯性测量单元
  • 扩展接口:Arduino Uno V3 兼容接口、STMod+ 扩展口

嗯,这块板子的外设相当丰富。我建议你拿到板子后,先对照原理图把每个模块的位置认一遍。别急着上电,先看跳线。

2.2 电源树分析——低功耗设计的起点

做低功耗设计,第一件事就是看懂电源树。你想想看,如果连板子上哪个模块用哪路电都不清楚,你怎么做功耗优化?

STM32H745I-DISCO 的电源输入有两种方式:

  • USB 供电:通过 CN1(USB Micro-B)输入 5V,板载的 ST1S10 降压到 3.3V 给系统供电。
  • 外部电源:通过 CN12(5V 直流输入)供电,适合脱离电脑独立运行。

板子上的电源轨主要有这几路:

电源轨 电压 主要负载 最大电流
VDD_MCU 3.3V STM32H745 主芯片 I/O、内部 LDO 500mA
VDD_SDRAM 3.3V SDRAM 芯片 200mA
VDD_LCD 3.3V LCD 显示屏背光及逻辑 300mA
VDD_AUDIO 1.8V WM8994 音频编解码器 100mA
VDD_USB 5V USB 接口、ST-LINK/V3 500mA

这里有个关键点:STM32H745 芯片内部有多个独立的电源域。M7 核心和 M4 核心可以分别进入不同的低功耗模式。比如 M7 跑着主任务,M4 可以进入 STOP 模式,反过来也行。我在项目中遇到过一种情况:M7 在做高速数据采集,M4 闲着没事干,但功耗却降不下来。后来发现是 M4 的时钟没关干净,内部 PLL 还在跑。所以,电源树分析不只是看板级供电,还要深入到芯片内部的电源域划分。

核心要点:低功耗设计从电源树开始。你要清楚每个模块的供电来源,以及它们是否可以被独立关断。STM32H745 的 PWR 寄存器组里,每个电源域都有对应的控制位。

下面这张图是我画的电源树结构,帮你理清各路供电的关系:

STM32H745I-DISCO 电源树结构 USB 5V / 外部 5V ST-LINK/V3 (3.3V) 3.3V 主电源轨 VDD_MCU (3.3V) VDD_SDRAM (3.3V) VDD_LCD (3.3V) VDD_AUDIO (1.8V) 💡 说明: 3.3V 主轨由 ST1S10 降压芯片产生,最大输出 1.5A。1.8V 音频轨由板载 LDO 从 3.3V 转换得到。

我的习惯:在项目初期,我会用 Excel 画一个电源树表格,把每路电源的电压、电流、使能引脚、可关断性都列出来。调试低功耗时,直接对照表格逐路关断测试,效率很高。

2.3 调试器配置——ST-LINK V3 的实战要点

STM32H745I-DISCO 板载的是 ST-LINK/V3,比老款的 V2 快不少。SWD 接口最高支持 24MHz 时钟,下载和调试体验明显提升。但配置不对,再好的调试器也白搭。

咱们先看硬件连接。板子上的 ST-LINK 部分默认已经和主芯片的 SWD 接口连好了,不需要额外接线。但有几个跳线帽你要注意:

  • JP1(ST-LINK 使能):默认短接,断开后 ST-LINK 与主芯片隔离,适合用外部调试器。
  • JP2(虚拟串口使能):默认短接,使能 ST-LINK 的 VCP 功能,可以在电脑上看到串口输出。
  • JP3(目标电压选择):默认短接,ST-LINK 从板子取电。如果断开,ST-LINK 会从 USB 单独取电。

我第一次用这块板子时,发现 Keil 死活连不上芯片。查了半天,原来是 JP1 被碰掉了。嗯,这种低级错误犯过一次就不会再犯了。

2.3.1 在 Keil MDK 中配置 ST-LINK V3

打开 Keil,点击魔术棒图标进入 Options for Target,选择 Debug 选项卡:

  1. 在 Use 下拉框中选择 ST-Link Debugger。
  2. 点击 Settings 按钮,进入 Cortex-M Target Driver Setup 窗口。
  3. 在 Debug 选项卡中,将 Port 设为 SW(不是 JTAG),Max Clock 设为 24MHz。
  4. 切换到 Flash Download 选项卡,勾选 Reset and Run,这样下载完程序后芯片会自动复位运行。

注意:如果你同时调试 M7 和 M4 两个核心,需要在 Keil 中创建两个调试会话,分别指定不同的调试接口。M7 使用 SWD 接口,M4 使用 SWO 或另外的 SWD 接口(如果板子支持)。STM32H745I-DISCO 的 M4 核心没有独立的 SWD 引脚,需要通过 M7 的调试代理来访问。这个咱们后面章节会详细讲。

2.3.2 在 STM32CubeIDE 中配置 ST-LINK V3

如果你用 STM32CubeIDE,配置更直观:

  1. 点击 Run → Debug Configurations。
  2. 双击 STM32 Cortex-M C/C++ Application 新建一个调试配置。
  3. 在 Debug Probe 选项卡中,选择 ST-LINK (OpenOCD) 或 ST-LINK (GDB)。
  4. 在 Interface 中选择 SWD,Frequency 设为 24MHz。
  5. 点击 Debug 开始调试。

我个人更习惯用 STM32CubeIDE 做多核调试,因为它对双核的支持更友好。你可以同时打开两个调试会话,一个连 M7,一个连 M4,在同一个 IDE 窗口里看到两个核心的运行状态。

2.4 开发板快速验证——上电点灯

硬件环境搭好了,咱们来个快速验证。写一个最简单的程序,让板子上的 LED 闪烁。STM32H745I-DISCO 板上有两个用户 LED:

  • LD1(红色):连接到 PH7
  • LD2(绿色):连接到 PI12

下面是一个 M7 核心的点灯代码,用 HAL 库实现:

#include "stm32h7xx_hal.h"

void SystemClock_Config(void);
void GPIO_Init(void);

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    GPIO_Init();

    while (1)
    {
        HAL_GPIO_TogglePin(GPIOH, GPIO_PIN_7);  // LD1 翻转
        HAL_Delay(500);                          // 延时 500ms
    }
}

void GPIO_Init(void)
{
    __HAL_RCC_GPIOH_CLK_ENABLE();

    GPIO_InitTypeDef GPIO_InitStruct = {0};
    GPIO_InitStruct.Pin = GPIO_PIN_7;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
}

void SystemClock_Config(void)
{
    // 使用 HSI 或 HSE 配置系统时钟,这里省略具体配置
    // 实际项目中建议使用 CubeMX 自动生成
}

编译下载后,如果 LD1 以 0.5 秒间隔闪烁,说明硬件环境搭建成功。如果没反应,检查 JP1 跳线帽和调试器驱动。

避坑指南:我曾经遇到过下载程序后 LED 不亮,但调试器能正常连接。后来发现是 SystemClock_Config 里没使能 PLL,芯片跑在默认的 HSI 64MHz 上,但 GPIO 时钟没配好。所以,点灯程序虽然简单,但时钟配置不能省。

2.5 本章小结

这一章咱们把 STM32H745I-DISCO 开发板的硬件环境搭起来了。你知道了板子的核心外设、电源树结构、调试器配置方法,还亲手跑了一个点灯程序。这些是后续多核协同开发和低功耗调试的基础。

记住:硬件环境搭建不是一次性的。随着项目深入,你可能需要调整跳线帽、更换供电方式、甚至外接调试器。把原理图放在手边,随时查阅。