LLVM 特点就是在于提供抽象的 IR (intermediate representation),先将源码翻译为 LLVM IR,再由后端生成不同指令集的程序,效率高,还能兼容不同平台。 所以在 Rust 积极拥抱 LLVM 之后,在嵌入式领域开发更加方便了,接下来就介绍一下如何在 STM32 (Cortex M3) 和 GD32 (RISC-V) 上用 Rust 开发。 Prerequisites ...
嵌入式rust也是有生态的 这次使用dht11这个库 不过编译体积竟然将近40K后来查看了一下 发现是rtt_target, log 这两个输出日志的库, 去掉以后体积10K不到相比于C语言的printf这两个库体积大多了 但是功能也强大. 不过一般也只是调试时需要用到., 视频播放量 517、弹幕量 0、
由于我们是嵌入式开发,因此需要交叉编译到MCU对应的架构,以stm32h7为例,它是ARM Cortex-m系列的MCU,其对应的target是:。对于cortex-m系列的MCU来说,每种核心对应的target可以参考:https://logiase.github.io/The-Embedded-Rust-Book-CN/intro/install.html。 我们使用来添加对应的交叉编译支持: rustup target ad...
1.安装rust rust官网传送门 2.安装调试和烧写软件(二者选其一) 安装openocd传送门 安装probe-rs 3.安装stlink 安装stlink传送门 4.搭建gcc-arm-none-eabi编译环境 搭建gcc-arm-none-eabi编译环境 5.安装vscode vscode官网传送门 6.安装相关插件 rust-analyzer:使用VSCode开发Rust必备 cortex-debug:基于openocd的...
用C++做单片机开发已经有很长的时间了,最近开始探索使用Rust开发单片机,我不想使用纯Rust的方式 因为一些库(rtos lvgl usb lwip等)没有合适的Rust代替品,而且我也不能绑定在stm32上 其他国产的单片机只要是ARM或者RISC-V内核也都要能使用。(51没办法了 即便是C语言 也是使用C51而不是标准C 总不能搞个Rust51吧...
STM32 (ST Microelectronics) STM32 系列的微控制器拥有所有微控制器中最丰富的 Rust 支持。stm32-rs仓库包含适用于各种 STM32 微控制器的 Rust PAC crate,stm32-rs主页包含所有系列的外设驱动支持包。截至 2024 年 6 月,拥有 1.2K 星,目前仓库更新比较活跃。仓库地址:https://github.com/stm32-rs/stm32-...
stm32f1xx-hal GPIO(General Purpose Input/Output)是一种可编程的数字信号引脚,用于微控制器和微处理器与外部设备进行交互。 功能: 输入: GPIO 可以配置为输入模式,读取外部信号的状态(例如按钮、开关或传感器)。 输出: GPIO 可以配置为输出模式,向外部设备发送信号(例如点亮 LED、驱动继电器)。
在RISC-V平台上进行Rust开发时,同样需要定义运行环境并进行编译。流程与STM32类似,但目标是RISC-V架构的开发板,如Longan Naon。这里可能需要使用芯来科技的RISC-V GNU工具链。编译生成的bin文件可以使用dfu-utils工具上传到开发板。在开发过程中,可能会遇到连接过程使用了arm-gcc和riscv-gcc的问题。
【用Rust玩嵌入式】用STM32做一个拇指琴音符指示器 硬件和电路图 一、音符的编码 17键拇卡林巴音阶对照图 为了节省内存,我们把上图的这些音符编码为相应的17个字符。 1, 2, 3, 4, 5, 6, 7 对应 C4~B4 c, d, e, f, g, a, b 对应 C5~B5...
在STM32F4系列单片机中,内存映射寄存器是实现中断管理、时钟设置与GPIO操作的核心手段。以GPIO E寄存器为例,其内存映像地址为特定值,模式寄存器MODER的偏移地址为0x00。若开发板需通过PE3控制LED灯,将其设置为输出模式,需向MODER寄存器的MODER3[1:0]写入01。Rust语言支持直接操作内存,如上例所示,...