#arm #hal #cortex-m #stm32h7xx

no-std app nucleo-h743zi

为NUCLEO-H743ZI和NUCLEO-H743ZI2板提供的示例程序

3个不稳定版本

0.2.1 2023年2月26日
0.2.0 2022年4月8日
0.1.0 2019年5月26日

#350嵌入式开发

0BSD 许可证

210KB
214

build

nucleo-h743zi

NUCLEO-H743ZI和NUCLEO-H743ZI2板提供的示例程序。

使用stm32h7xx-hal存储库。

欢迎对这个存储库进行合作,也欢迎提交拉取请求!

项目目标:通过Rust简化NUCLEO H743ZI和H743ZI2板的起步步骤

此存储库包含针对NUCLEO H743ZI和NUCLEO H743ZI2板的特定示例和入门材料,应与这些特定板一起“即插即用”,并通过零配置或选项演示这些板上的功能使用。

虽然与stm32h7xx-hal有一些冗余,但这两个项目有不同的目标。在这里,目标是提供一种简单的方法来使用这些板,而不涵盖所有可能的功能或提供通用的帮助库。对于更高级的使用,鼓励您直接使用stm32h7xx-hal存储库。当然,如上所述,我们欢迎符合项目目标的建议改进。

为了方便使用Nucleo-H743ZI和Nucleo-H743ZI2板,此存储库中的代码在默认情况下应能在两个板上使用,无需修改或配置。

此项目支持knurling-rs,这简化了在嵌入式设备上的开发、测试和调试。

NUCLEO H743ZI和H743ZI2板之间的差异

功能 NUCLEO-H743ZI NUCLEO-H743ZI2 备注
STLINK V2-1,可切割PCB V3E,PCB上嵌入式 DB3171,Rev 14
板参考 UM1974用户手册STM32 Nucleo-144板(MB1137) UM2407用户手册STM32H7 Nucleo-144板(MB1364)
用户LD2 蓝色,连接到PB7 黄色,连接到PE1
可用性 已淘汰 可用

此存储库中的代码在两个板上使用时无需修改或配置。

先决条件

在构建项目之前,您需要安装以下组件。

$ rustup target add thumbv7em-none-eabihf
$ rustup component add llvm-tools-preview
$ cargo install cargo-binutils

这将安装一个新的支持Cortex-M7F的Rust编译器目标,并安装一个cargo插件以直接调用binutils

为了调试程序,您可以使用probe-rs或适用于您系统的兼容版本gdb

构建和运行

构建和运行方法 1:构建.bin文件

此方法构建一个包含编译固件的.bin文件。该文件被复制到Nucleo的模拟USB大容量存储设备上,设备会自动重置并启动新固件。

构建方式

cargo build --release --bin blinky
# (Substitute any of the example programs for 'blinky')

转换为.bin文件

cargo objcopy --release --bin blinky -- -O binary target/thumbv7em-none-eabihf/release/blinky.bin
cargo objcopy --release --bin serial -- -O binary target/thumbv7em-none-eabihf/release/serial.bin

闪存设备

cp target/thumbv7em-none-eabihf/release/blinky.bin /path/to/NODE_H743ZI/
cp target/thumbv7em-none-eabihf/release/serial.bin /path/to/NODE_H743ZI/

构建和运行方法 2:使用probe-run闪存和运行设备

作为上述方法的替代方案,我们使用Knurling项目中的probe-run来闪存我们的固件并运行它。使用defmt crate记录和println!消息将在运行时可见。当输入cargo run时,此方法会自动选择,因为runner.cargo/config文件中被指定。有关probe-run硬件选项,请参阅下文。板上集成的STLINKv3硬件最简单,因为它内置在NUCLEO-H743ZI2板上。

要查看defmt消息的日志,请使用适当的DEFMT_LOG环境变量进行编译。(默认情况下,defmt只显示错误级别的消息。)

Powershell(Windows)

$Env:DEFMT_LOG="trace"

Bash(Linux/macOS)

export DEFMT_LOG=trace

probe-run硬件选项A:板上STLINKv3

这是最简单的方法,只需用USB线连接到您的设备即可。如果probe-run返回Error: The firmware on the probe is outdated,您可以使用从st.com下载的文件来更新Nucleo上的STLINKv3固件。

probe-run硬件选项B:将Raspberry Pi Pico作为CMSIS-DAP探针

可以使用运行DapperMime固件的Raspberry Pi Pico板作为低成本的CMSIS-DAP探针进行调试。在此配置中,Nucleo中内置的STLINKv3硬件将被绕过。

要设置您的Nucleo,请执行以下步骤。

  1. 将以下引脚连接到Pico,以便将其作为调试器连接到stm32h743芯片的SWD引脚。
信号 MIPI-10调试连接器(CN5)在NUCLEO-H743ZI2上 Raspberry Pi Pico
SWDIO 引脚 2 GP3
GND 引脚 3 GND
SWCLK 引脚 4 GP2
  1. 通过在JP1上设置跳线来保持STLINKv3处于复位状态。
  2. 通过将USB充电器连接到STLINK微USB连接器CN1并设置跳线JP2到CHGR位置(从默认的STLINK位置)来为Nucleo板供电。

调试

调试方法 1:使用probe-rs-debug和Visual Studio Code

此方法推荐使用,因为它不需要安装gdbopenocd。请遵循probe-rs指南

调试方法 2:使用openocdgdb

可以使用openocdgdb进行调试。提供了一份示例openocd配置文件。

  1. 根据所使用的操作系统和所需的调试器,在.cargo/config文件中取消注释指定的一个runner。
  2. 在项目根目录下运行openocd
  3. 运行 cargo run --bin blinkycargo run --bin serial

您还可以使用带有 Cortex-Debug 扩展的 VS Code 来进行带有图形界面的调试。在 .vscode 文件夹中提供了一些配置文件。

许可证

0条款BSD许可证.

依赖项

~93MB
~2.5M SLoC