{"id":13423296,"url":"https://github.com/astraw/nucleo-h743zi","last_synced_at":"2025-03-19T00:30:52.743Z","repository":{"id":34905191,"uuid":"188522539","full_name":"astraw/nucleo-h743zi","owner":"astraw","description":"Examples programs for nucleo-h743zi board","archived":false,"fork":false,"pushed_at":"2023-06-10T04:57:56.000Z","size":265,"stargazers_count":17,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-28T13:23:46.158Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"0bsd","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/astraw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-0BSD.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-05-25T04:58:18.000Z","updated_at":"2024-07-18T18:08:37.000Z","dependencies_parsed_at":"2024-01-12T15:13:19.643Z","dependency_job_id":null,"html_url":"https://github.com/astraw/nucleo-h743zi","commit_stats":{"total_commits":57,"total_committers":3,"mean_commits":19.0,"dds":"0.38596491228070173","last_synced_commit":"ba82832a9b5ee78b88aac7c8e38fc667b4691e7b"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astraw%2Fnucleo-h743zi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astraw%2Fnucleo-h743zi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astraw%2Fnucleo-h743zi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astraw%2Fnucleo-h743zi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astraw","download_url":"https://codeload.github.com/astraw/nucleo-h743zi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243955805,"owners_count":20374373,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T00:00:28.666Z","updated_at":"2025-03-19T00:30:52.389Z","avatar_url":"https://github.com/astraw.png","language":"Rust","funding_links":[],"categories":["Board support crates"],"sub_categories":["STMicroelectronics"],"readme":"[![build](https://github.com/astraw/nucleo-h743zi/actions/workflows/cargo.yml/badge.svg)](https://github.com/astraw/nucleo-h743zi/actions/workflows/cargo.yml)\n\n# nucleo-h743zi\n\nExample programs for the [NUCLEO-H743ZI and\nNUCLEO-H743ZI2](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html)\nboards.\n\nThis uses the [stm32h7xx-hal](https://github.com/stm32-rs/stm32h7xx-hal) crate.\n\nCollaboration on this crate is highly welcome as are pull requests!\n\n## Project Aim: Facilitate First Steps with Nucleo H743ZI and H743ZI2 Boards and Rust\n\nThis repository contains examples and starter material specific to the Nucleo\nH743ZI and H743ZI2 boards and should work \"out of the box\" with these specific\nboards and demonstrates the usage of features on these boards with zero\nconfiguration or options.\n\nWhile there is some redundancy with\n[stm32h7xx-hal](https://github.com/stm32-rs/stm32h7xx-hal), the two projects\nhave different aims. Here, the goal is to provide an easy on-ramp to the usage\nof these boards without covering all possible features or providing a\nuniversally helpful library. For more advanced usage, you are encouraged to take\nthe lessons learned here and directly use the\n[stm32h7xx-hal](https://github.com/stm32-rs/stm32h7xx-hal) crate. Of course, as\nmentioned above, we welcome suggested improvements that fit within the project\naim.\n\nTo facilitate ease-of-use with both the Nucleo-H743ZI and Nucleo-H743ZI2 boards,\nthe code in this repository should work by default on both boards without\nmodification or configuration.\n\nThis project supports [knurling-rs](https://knurling.ferrous-systems.com/),\nwhich simplifies developing, testing and debugging on embedded devices.\n\n## Differences between the Nucleo H743ZI and H743ZI2 Boards\n\n| Feature | NUCLEO-H743ZI | NUCLEO-H743ZI2 | notes |\n|---------|---------------|----------------|--------|\n| STLINK | V2-1, Cuttable PCB | V3E, Embedded on PCB | see [DB3171, Rev 14](https://www.st.com/resource/en/data_brief/nucleo-l496zg.pdf) |\n| Board reference | [UM1974 User Manual STM32 Nucleo-144 boards (MB1137)](https://www.st.com/resource/en/user_manual/dm00244518-stm32-nucleo144-boards-mb1137-stmicroelectronics.pdf) | [UM2407 User Manual STM32H7 Nucleo-144 boards (MB1364)](https://www.st.com/resource/en/user_manual/dm00499160-stm32h7-nucleo144-boards-mb1364-stmicroelectronics.pdf) ||\n| User LD2 | Blue, connected to PB7 | Yellow, connected to PE1 | |\n| Availability | Obsolete | Available | |\n\nThe code in this repository should work on both boards without modification or\nconfiguration.\n\n## Pre-requisites\n\nYou will need the following components installed before building the project.\n\n```\n$ rustup target add thumbv7em-none-eabihf\n$ rustup component add llvm-tools-preview\n$ cargo install cargo-binutils\n```\nThis will install a new target for the Rust compiler supporting Cortex-M7F and a\ncargo plugin to call `binutils` directly.\n\nFor debugging the program, you can use either probe-rs or a compatible version\nof `gdb` for your system.\n\n## Building and running\n\n### Build and Run Method 1: `.bin` file\n\nThis method builds a `.bin` file containing the compiled firmware. This file is\ncopied onto the emulated USB mass storage device of the Nucleo and the device is\nautomatically reset and will boot into the new firmware.\n\nBuild with:\n\n```sh\ncargo build --release --bin blinky\n# (Substitute any of the example programs for 'blinky')\n```\n\nConvert to a .bin file:\n\n```sh\ncargo objcopy --release --bin blinky -- -O binary target/thumbv7em-none-eabihf/release/blinky.bin\ncargo objcopy --release --bin serial -- -O binary target/thumbv7em-none-eabihf/release/serial.bin\n```\n\nFlash the device:\n\n```sh\ncp target/thumbv7em-none-eabihf/release/blinky.bin /path/to/NODE_H743ZI/\ncp target/thumbv7em-none-eabihf/release/serial.bin /path/to/NODE_H743ZI/\n```\n\n### Build and Run Method 2: flash and run the device with `probe-run`\n\nAs an alternative to the above method, we use `probe-run` from the Knurling\nproject to flash our firmware and run it. Log and `println!` messages using the\n`defmt` crate will be visible when running. This method is automatically chosen\nwhen typing `cargo run` because of the `runner` specified in the `.cargo/config`\nfile. See below for the `probe-run` hardware options. The onboard STLINKv3\nhardware is easiest because it is built-in to the NUCLEO-H743ZI2 board.\n\nTo see log messages from `defmt` messages, compile with the `DEFMT_LOG`\nenvironment variable set appropriately. (By default, `defmt` will show only\nerror level messages.)\n\nPowershell (Windows)\n```\n$Env:DEFMT_LOG=\"trace\"\n```\n\nBash (Linux/macOS)\n```\nexport DEFMT_LOG=trace\n```\n\n#### `probe-run` Hardware option A: onboard STLINKv3\n\nThis is the easiest option and works with only a USB cable to your device. If\n`probe-run` returns with `Error: The firmware on the probe is outdated`, you can\nupdate the STLINKv3 firmware on your Nucleo using a download from\n[st.com](https://www.st.com/en/development-tools/stsw-link007.html).\n\n#### `probe-run` Hardware option B: Raspberry Pi Pico as a CMSIS-DAP probe\n\nDebugging can be performed with a Raspberry Pi Pico board running the\n[DapperMime firmware](https://github.com/majbthrd/DapperMime) to function as an\ninexpensive CMSIS-DAP probe. In this configuration, the STLINKv3 hardware built\ninto the Nucleo will be bypassed.\n\nTo setup your Nucleo for this, perform the following steps.\n\n1. Connect the following pins to connect the Pico as a debugger to the SWD pins\n   of the stm32h743 chip.\n\n| Signal | MIPI-10 debug connector (CN5) on NUCLEO-H743ZI2 | Raspberry Pi Pico |\n|---------|---------------|----------------|\n| SWDIO | Pin 2 | GP3 |\n| GND | Pin 3 | GND |\n| SWCLK | Pin 4 | GP2|\n\n2. Hold the STLINKv3 in reset state by setting a jumper on JP1.\n3. Power the Nucleo board by USB charger connected to the STLINK micro USB\n   connector CN1 and setting the jumper JP2 to the CHGR position (from the\n   default STLINK position).\n\n## Debugging\n\n### Debugging method 1: with `probe-rs-debug` and Visual Studio Code\n\nThis method is recommended as it requires no installation of `gdb` or `openocd`.\nFollow [the `probe-rs` guide](https://probe.rs/docs/tools/vscode/).\n\n### Debugging method 2: with `openocd` and `gdb`\n\nDebugging can be performed with `openocd` and `gdb`. A sample `openocd`\nconfiguration file is provided.\n\n1. Uncomment one of the runners specified in the `.cargo/config` file according to the used operating\n   system and desired debugger.\n2. Run `openocd` in the project root\n3. Run `cargo run --bin blinky` or `cargo run --bin serial`\n\nYou can also perform debugging with a GUI using VS Code with the Cortex-Debug extension.\nSome configuration files were provided in the `.vscode` folder.\n\n## License\n\n[0-clause BSD license](LICENSE-0BSD.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastraw%2Fnucleo-h743zi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastraw%2Fnucleo-h743zi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastraw%2Fnucleo-h743zi/lists"}