更多分享内容可访问我的个人博客
https://www.niuiic.top/
本系列教程全部置于stm32专栏。
本文为使用 rust 开发 stm32 系列教程前言。
Why Rust
- Rust 特性就不用多介绍了,有个编译器管着有时候比用C到处浪把自己整没了好。
- ST官方逐渐停止对C固件库的更新,使用MX感觉没自己写舒服。毕竟它也就生成个初始化代码,虽然看起来挺快,但是实际上自定义snippets可以比它快得多。可能对于不熟悉当前开发板的用户来说可以省去一点看参考手册的麻烦。不过老手可能无所谓。
- 尝鲜吧。
- 折腾吧(又是和编译器斗智斗勇的一天)。
内容
- 不会介绍单片机原理、各外设原理、数电、模电等。这些都可以找书搞定。
- 介绍如何搭建stm32的开发环境。
- 给出例程供参考使用。大部分例程参考
stm32fxxx-hal crate
(如stm32f1xx-hal
)官方例程,并在官方例程的基础上增加了一些注释,修正了一些错误。可以借鉴不同型号的stm32例程,毕竟固件库的核是一样的。 - 本教程定位在固件库的层面上。关于rust 嵌入式底层的玩法请参考Embedded Book。
- 所有案例使用的crate都已暴露在程序中,去
crates.io
搜索,按照给出的建议写入Cargo.toml
。主要注意的是各固件库发布的版本对案例程序而言可能较低,建议使用git
指定仓库,不使用version
。另外,部分外设,如can
,需要开启相应的feature才可使用。
建议
硬件
开发板建议选用stm32f3discovery
。不嫌贵的用stm32f4discovery
也可以,f7
就不要上了。因为这两款开发板被tock os
支持,可以在上面使用这款用rust编写的RTOS。
仿真器搞个JTAG接口的ARM仿真器就行,ST-LINK感觉不太稳定(也可能是买到了盗版)。
软件
系统的话强烈建议使用linux。
编辑器其实无所谓,vimer自然推荐vim,退一步选个vscode,IDE就算了。
使用openocd驱动仿真器。
使用gdb调试程序。
资源
- stm32的一堆参考手册
- Rust 论坛
- Tock os(一个产品级的RTOS)
- Discovery Book(for stm32f3discovery)
- Embedded Book
- stm32fxxx-hal(固件库)
- stm32fx(外设库,寄存器编程)
- RTIC(不清楚这是什么的可以想象成RTOS的管理调度层)
- stm32-rs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)