66 lines
2 KiB
Markdown
66 lines
2 KiB
Markdown
# `stm32-template`
|
|
|
|
> A template for building applications for STM32 microcontrollers
|
|
|
|
## Dependencies
|
|
|
|
To build embedded programs using this template you'll need:
|
|
|
|
- The `cargo generate` subcommand. [Installation
|
|
instructions](https://github.com/cargo-generate/cargo-generate#installation).
|
|
``` console
|
|
$ cargo install cargo-generate
|
|
```
|
|
|
|
- Flash and run/debug tools:
|
|
``` console
|
|
$ cargo install probe-rs --features cli
|
|
```
|
|
|
|
- `rust-std` components (pre-compiled `core` crate) for the ARM Cortex-M
|
|
targets. Run:
|
|
|
|
``` console
|
|
$ rustup target add thumbv6m-none-eabi thumbv7m-none-eabi thumbv7em-none-eabi thumbv7em-none-eabihf
|
|
```
|
|
|
|
## Instantiate the template.
|
|
|
|
1. Run and enter project name
|
|
``` console
|
|
$ cargo generate --git https://github.com/burrbull/stm32-template/
|
|
Project Name: app
|
|
```
|
|
|
|
2. Specify **chip product name** and answer on several other guide questions.
|
|
|
|
3. Your program is ready to compile:
|
|
``` console
|
|
$ cargo build --release
|
|
```
|
|
|
|
## Flash and run/debug
|
|
|
|
You can flash your firmware using one of those tools:
|
|
|
|
- `cargo flash --release` — just flash
|
|
- `cargo run --release` — flash and run using `probe-rs run` runner or `probe-run` runner (deprecated) which you can set in `.cargo/config.toml`
|
|
- `cargo embed --release` — multifunctional tool for flash and debug
|
|
|
|
You also can debug your firmware on device from VS Code with [probe-rs](https://probe.rs/docs/tools/vscode/) extention or with `probe-rs gdb` command.
|
|
You will need SVD specification for your chip for this. You can load patched SVD files [here](https://stm32-rs.github.io/stm32-rs/).
|
|
|
|
## Contribution
|
|
|
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
|
|
dual licensed as above, without any additional terms or conditions.
|
|
|
|
## Code of Conduct
|
|
|
|
Contribution to this crate is organized under the terms of the [Rust Code of
|
|
Conduct][CoC], the maintainer of this crate, promises
|
|
to intervene to uphold that code of conduct.
|
|
|
|
[CoC]: https://www.rust-lang.org/policies/code-of-conduct
|