Module drone_core::reg [] [src]

Memory-mapped registers.

Mappings and Tokens

Most register should be already mapped by platform crates.

use core::mem::size_of_val;
use drone_core::reg::{tokens, mappings};
use drone_core::reg::prelude::*;

mappings! {
  /// SysTick timer.
  STK; // block name

  /// SysTick control and status register.
  CTRL { // register name
    0xE000_E010 // memory address
    0x20 // bit size
    0x0000_0000 // reset value
    RReg WReg; // list of marker traits for the register

    /// Counter enable.
    ENABLE { // field name
      0 // offset
      1 // width
      RRegField WRegField // list of marker traits for the field
    }
  }
}

tokens! {
  /// Register tokens.
  RegIndex;

  STK {
    /// SysTick control and status register.
    CTRL;
  }
}

fn main() {
  let regs = unsafe { RegIndex::new() };
  assert_eq!(size_of_val(&regs.stk_ctrl.enable), 0);
  assert_eq!(size_of_val(&regs.stk_ctrl), 0);
  assert_eq!(size_of_val(&regs), 0);
}

Reexports

pub use drone_core_macros::reg_mappings as mappings;
pub use drone_core_macros::reg_tokens as tokens;

Modules

prelude

Memory-mapped registers prelude.

Structs

Ctt

Copyable token tag.

Ftt

Forkable token tag.

Stt

Synchronous token tag.

Utt

Unique token tag.

Traits

RReg

Register that can read its value.

RRegField

Register field that can read its value.

RRegFieldBit

Single-bit register field that can read its value.

RRegFieldBits

Multiple-bits register field that can read its value.

Reg

Memory-mapped register token. Types which implement this trait should be zero-sized. This is a zero-cost abstraction for safely working with memory-mapped registers.

RegField

Register field token.

RegFieldBit

Single-bit register field.

RegFieldBits

Multiple-bits register field.

RegFork

Forkable token.

RegHold

Wrapper for a register value that holds register reference.

RegOwned

Owned token tag.

RegRaw

Raw register value type.

RegRef

Referenceable register.

RegShared

Shared token tag.

RegTag

Token tag.

RegTokens

A set of register tokens.

RegVal

Wrapper for a register value.

RoReg

Read-only register.

RoRegField

Register field that can only read its value.

RwRegUnique

Register that can read and write its value in a single-threaded context.

WReg

Register that can write its value.

WRegField

Register field that can write its value.

WRegFieldBit

Single-bit register field that can write its value.

WRegFieldBits

Multiple-bits register field that can write its value.

WRegShared

Register that can write its value in a multi-threaded context.

WRegUnique

Register that can write its value in a single-threaded context.

WoReg

Write-only register.

WoRegField

Register field that can only write its value.

WoWoRegField

Write-only field of write-only register.

WoWoRegFieldBit

Single-bit write-only field of write-only register.

WoWoRegFieldBits

Multiple-bits write-only field of write-only register.