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. |