shared-bus 项目使用教程
1. 项目的目录结构及介绍
shared-bus/
├── src/
│ ├── lib.rs
│ ├── bus_manager.rs
│ ├── bus_proxy.rs
│ ├── mutex.rs
│ └── ...
├── tests/
│ ├── test_i2c.rs
│ ├── test_spi.rs
│ └── ...
├── .gitignore
├── CHANGELOG.md
├── Cargo.toml
├── LICENSE-APACHE
├── LICENSE-MIT
└── README.md
目录结构介绍
- src/: 包含项目的核心代码,如
lib.rs
是库的入口文件,bus_manager.rs
和bus_proxy.rs
分别管理总线访问和代理。 - tests/: 包含项目的测试代码,如
test_i2c.rs
和test_spi.rs
用于测试 I2C 和 SPI 总线的共享功能。 - .gitignore: 指定 Git 版本控制系统忽略的文件和目录。
- CHANGELOG.md: 记录项目的变更日志。
- Cargo.toml: 项目的配置文件,定义了项目的依赖、版本等信息。
- LICENSE-APACHE 和 LICENSE-MIT: 项目的许可证文件。
- README.md: 项目的介绍文档,通常包含项目的概述、安装和使用说明。
2. 项目的启动文件介绍
src/lib.rs
lib.rs
是 shared-bus
库的入口文件,定义了库的公共接口和模块。它导入了其他模块,如 bus_manager
和 bus_proxy
,并提供了初始化总线管理器和获取总线代理的功能。
pub mod bus_manager;
pub mod bus_proxy;
pub mod mutex;
// 其他代码...
src/bus_manager.rs
bus_manager.rs
文件定义了不同类型的总线管理器,如 BusManagerSimple
、BusManagerStd
、BusManagerCortexM
等。这些管理器用于在不同场景下安全地共享总线。
pub struct BusManagerSimple<B> {
bus: B,
}
impl<B> BusManagerSimple<B> {
pub fn new(bus: B) -> Self {
BusManagerSimple { bus }
}
// 其他代码...
}
src/bus_proxy.rs
bus_proxy.rs
文件定义了总线代理,如 I2cProxy
、SpiProxy
等。这些代理用于在多个设备之间共享总线访问。
pub struct I2cProxy<'a, B> {
bus: &'a B,
}
impl<'a, B> I2cProxy<'a, B> {
pub fn new(bus: &'a B) -> Self {
I2cProxy { bus }
}
// 其他代码...
}
3. 项目的配置文件介绍
Cargo.toml
Cargo.toml
是 Rust 项目的配置文件,定义了项目的元数据、依赖关系和构建选项。
[package]
name = "shared-bus"
version = "0.1.0"
authors = ["Rahix"]
edition = "2018"
[dependencies]
embedded-hal = "0.2"
[features]
std = ["std::sync::Mutex"]
cortex-m = ["cortex_m::interrupt::Mutex"]
xtensa = ["shared_bus::XtensaMutex"]
# 其他配置...
配置文件介绍
- [package]: 定义了项目的名称、版本、作者和使用的 Rust 版本。
- [dependencies]: 列出了项目依赖的其他库,如
embedded-hal
。 - [features]: 定义了项目的特性,如
std
、cortex-m
和xtensa
,用于在不同平台上启用不同的总线管理器。
通过以上配置,shared-bus
项目可以在不同的嵌入式平台上安全地共享总线,并提供了灵活的配置选项。