A guide to rust your stm32 microcontroller
English: README.EN.md
Rust嵌入式开发指北。
我C、C++写的好好的,为什么要换Rust?
首先Rust作为一门新兴的语言,相比C有着更良好的使用体验,其次使用Rust可以享受到Rust丰富的no_std
环境。
Rust具有的高级现代语言的特性使得其在不同型号芯片,甚至不同架构芯片上,仅仅通过简单的修改即可移植,See 移植。
同时相比于arm-gcc-none-eabi
,即标准的ARM嵌入式编译器,Rust有着更高的性能。
什么叫舒服啊.jpg
目前有如下例子:
VSCode是一个很好的选择,你需要安装如下扩展:
请注意:此bug已经修复, 请使用最新版本
0.2.441
. 在最新版本的rust-analyzer
中存在着无法解析宏的Bug, 在修复之前请使用 0.2.400 版本 当前最新版本:0.2.416
使用如下命令进行编译 blink
cargo build --example blink
编译后的ELF产物在target/thumbv7em-none-eabihf/debug/
目录下,执行binutils
即可查看相关信息。
第一次编译的过程会很长,如果你修改了内存布局memory.x
,再次执行cargo build
并不会重新应用你的内存布局,
你需要清除掉之前的缓存重新进行编译才可以应用新的内存布局
cargo clean
cargo build --example some_bin
stm32F429IGT6,若干导线,ST-Link调试器,TTL转串口。
例子中用到的外设资源:
高速外部时钟源 25MHz
在我的博客上有更多有关嵌入式Rust的相关内容,也在持续更新中。
-> Blog <-
如果想要在你的设备上进行实验,请注意一些内容:
memory.x
cargo.toml
中替换HAL,如果你的设备不是ARM内核,请同时修改cortex-m
至你的目标架构如果你要在不同目标平台上进行修改尝试,请执行以下操作:
.cargo/config
文件,将其中有关target的内容修改为你的目标架构cargo.toml
,引入你设备的布局,HAL等.vscode/settings.json
中的内容来让VSCode正确检查你的代码no_std
库Open an Issues And I‘ll try my best to answer.
@Logiase