3 个版本
0.1.2 | 2020 年 4 月 29 日 |
---|---|
0.1.1 | 2020 年 4 月 29 日 |
0.1.0 | 2020 年 4 月 29 日 |
#270 在 操作系统
29,724 每月下载量
用于 icu_freertos
84KB
2K SLoC
FreeRTOS Rust
用于在 Rust 中使用 FreeRTOS API 的包装库。
要使用 FreeRTOS 构建嵌入式应用程序,请参阅 freertos-rust 主页。
用法
该 crate 发布在 crates.io
[dependencies]
freertos-rust = "*"
lib.rs
:
FreeRTOS for Rust
Rust 接口用于 FreeRTOS 嵌入式操作系统。需要 nightly Rust。假设目标系统提供动态内存分配。
此库通过使用 C 桥接库与 FreeRTOS 进行接口,该库为 FreeRTOS 宏提供函数包装器。编译的 Rust 应用程序应与基本 C/C++ 固件二进制文件链接。
示例在 freertos-rust-examples 中提供
有关更多示例,请检查包含的基于 GCC ARM/Rust/QEMU 的单元测试。项目 qemu_runner
将此库交叉编译,使用 GCC ARM 编译主固件,并在单元测试中链接适当的入口点。使用 GNU ARM Eclipse QEMU 运行测试二进制文件。
请务必查看 FreeRTOS 文档。
示例
启动新任务
Task::new().name("hello").stack_size(128).start(|| {
loop {
println!("Hello world!");
CurrentTask::delay(Duration::infinite());
}
}).unwrap();
FreeRtosUtils::start_scheduler();
队列
let q = Queue::new(10).unwrap();
q.send(10, Duration::ms(5)).unwrap();
q.receive(Duration::infinite()).unwrap();
互斥锁
let m = Mutex::new(0).unwrap();
{
let mut v = m.lock(Duration::infinite()).unwrap();
*v += 1;
}