#memory-mapped #register #volatile #memory-access #no-std

no-std volatile-register

对内存映射硬件寄存器的易失性访问

6 个版本

使用旧Rust 2015

0.2.2 2023年10月20日
0.2.1 2021年8月14日
0.2.0 2017年3月8日
0.1.2 2016年10月15日
0.1.1 2016年9月28日

#75硬件支持

Download history 25098/week @ 2024-03-14 26794/week @ 2024-03-21 25914/week @ 2024-03-28 28025/week @ 2024-04-04 27905/week @ 2024-04-11 26896/week @ 2024-04-18 23112/week @ 2024-04-25 25324/week @ 2024-05-02 20724/week @ 2024-05-09 22330/week @ 2024-05-16 24405/week @ 2024-05-23 26461/week @ 2024-05-30 24497/week @ 2024-06-06 26951/week @ 2024-06-13 28620/week @ 2024-06-20 23592/week @ 2024-06-27

108,063 每月下载量
1,317 个包(22 个直接) 中使用

MIT/Apache

10KB
56

crates.io crates.io

volatile-register

对内存映射硬件寄存器的易失性访问

文档

许可证

在以下任一许可证下发布

由你选择。

贡献

除非你明确声明,否则根据Apache-2.0许可证定义,你提交给工作的任何有意贡献都应按上述方式双重许可,而不附加任何额外条款或条件。


lib.rs:

对内存映射硬件寄存器的易失性访问

用法

use volatile_register::RW;

// Create a struct that represents the memory mapped register block
/// Nested Vector Interrupt Controller
#[repr(C)]
pub struct Nvic {
    /// Interrupt Set-Enable
    pub iser: [RW<u32>; 8],
    reserved0: [u32; 24],
    /// Interrupt Clear-Enable
    pub icer: [RW<u32>; 8],
    reserved1: [u32; 24],
    // .. more registers ..
}

// Access the registers by casting the base address of the register block
// to the previously declared `struct`
let nvic = 0xE000_E100 as *const Nvic;
// Unsafe because the compiler can't verify the address is correct
unsafe { (*nvic).iser[0].write(1) }

依赖项

~7KB