15 个版本
0.5.5 | 2021 年 12 月 28 日 |
---|---|
0.5.4 | 2021 年 4 月 20 日 |
0.5.0 | 2020 年 9 月 18 日 |
0.4.2 | 2020 年 3 月 31 日 |
0.0.2 | 2019 年 7 月 29 日 |
在 嵌入式开发 中排名第 1573
每月下载量 364 次
在 13 个 库中使用(5 个直接使用)
14KB
169 行代码(不包括注释)
RusPiRo Register
该库提供方便与通常由一组位域表示的寄存器字段值一起工作的定义。
用法
要使用此库,只需将其依赖项添加到您的 Cargo.toml
文件中
[dependencies]
ruspiro-register = "0.5.5"
使用位掩码和位位移指定单个寄存器字段。可以为类型 u8
、u16
、u32
和 u64
实例化 RegisterField
结构。
use ruspiro_register::*;
fn main() {
let field = RegisterField::<u32>::new(0x3, 6);
}
要表示寄存器字段的具体值,请使用 RegisterFieldValue
结构。它适用于与 RegisterField
相同的标量类型:u8
、u16
、u32
和 u64
。
use ruspiro_register::*;
fn main() {
let field = RegisterField::<u8>::new(0x3, 2);
// the value to the regsiter field will be shifted and masked internally
// so it will be provided without any shifting
let value = RegisterFieldValue::<u8>::new(field, 0b10);
println!("{:?}", value);
}
打印的寄存器字段值将如下所示
RegisterFieldValue { field: RegisterField {
Bits: [3:2]
Mask: 0b1100
}, value: 2, raw_value: 8 }
这些定义不太可能直接用作表示具有所有字段的完整寄存器的表示。通常将使用宏来减少寄存器定义的复杂性。示例可以在 ruspiro-mmio-register 和 ruspiro-arch-aarch64 库中找到。
许可证
根据您的选择,在 Apache License,版本 2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)或 MIT(LICENSE-MIT 或 http://opensource.org/licenses/MIT)下许可。