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(®s.stk_ctrl.enable), 0); assert_eq!(size_of_val(®s.stk_ctrl), 0); assert_eq!(size_of_val(®s), 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. |