#register #bit-field #set-bit #ruspiro #field-value #registerfields

no-std ruspiro-register

该库提供方便与通常由一组位域表示的寄存器字段值一起工作的定义。

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

Download history 216/week @ 2024-04-18 71/week @ 2024-04-25 66/week @ 2024-05-02 60/week @ 2024-05-09 48/week @ 2024-05-16 49/week @ 2024-05-23 169/week @ 2024-05-30 121/week @ 2024-06-06 153/week @ 2024-06-13 198/week @ 2024-06-20 184/week @ 2024-06-27 155/week @ 2024-07-04 64/week @ 2024-07-11 46/week @ 2024-07-18 96/week @ 2024-07-25 100/week @ 2024-08-01

每月下载量 364
13 库中使用(5 个直接使用)

MIT/Apache

14KB
169 行代码(不包括注释)

RusPiRo Register

该库提供方便与通常由一组位域表示的寄存器字段值一起工作的定义。

CI Latest Version Documentation License

用法

要使用此库,只需将其依赖项添加到您的 Cargo.toml 文件中

[dependencies]
ruspiro-register = "0.5.5"

使用位掩码和位位移指定单个寄存器字段。可以为类型 u8u16u32u64 实例化 RegisterField 结构。

use ruspiro_register::*;

fn main() {
    let field = RegisterField::<u32>::new(0x3, 6);
}

要表示寄存器字段的具体值,请使用 RegisterFieldValue 结构。它适用于与 RegisterField 相同的标量类型:u8u16u32u64

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-registerruspiro-arch-aarch64 库中找到。

许可证

根据您的选择,在 Apache License,版本 2.0(LICENSE-APACHEhttp://www.apache.org/licenses/LICENSE-2.0)或 MIT(LICENSE-MIThttp://opensource.org/licenses/MIT)下许可。

无运行时依赖项