Type Alias RB_MEM

Source
pub type RB_MEM = Reg<RB_MEM_SPEC>;
Expand description

RB_MEM (rw) register accessor: memory that stores Rb

You can read this register and get rb_mem::R. You can reset, write, write_with_zero this register using rb_mem::W. You can also modify this register. See API.

For information about available fields see rb_mem module

Aliased Type§

struct RB_MEM { /* private fields */ }

Implementations

Source§

impl<REG: RegisterSpec> Reg<REG>

Source

pub fn as_ptr(&self) -> *mut REG::Ux

Returns the underlying memory address of register.

let reg_ptr = periph.reg.as_ptr();
Source§

impl<REG: Readable> Reg<REG>

Source

pub fn read(&self) -> R<REG>

Reads the contents of a Readable register.

You can read the raw contents of a register by using bits:

let bits = periph.reg.read().bits();

or get the content of a particular field of a register:

let reader = periph.reg.read();
let bits = reader.field1().bits();
let flag = reader.field2().bit_is_set();
Source§

impl<REG: Resettable + Writable> Reg<REG>

Source

pub fn reset(&self)

Writes the reset value to Writable register.

Resets the register to its initial state.

Source

pub fn write<F>(&self, f: F) -> REG::Ux
where F: FnOnce(&mut W<REG>) -> &mut W<REG>,

Writes bits to a Writable register.

You can write raw bits into a register:

periph.reg.write(|w| unsafe { w.bits(rawbits) });

or write only the fields you need:

periph.reg.write(|w| w
    .field1().bits(newfield1bits)
    .field2().set_bit()
    .field3().variant(VARIANT)
);

or an alternative way of saying the same:

periph.reg.write(|w| {
    w.field1().bits(newfield1bits);
    w.field2().set_bit();
    w.field3().variant(VARIANT)
});

In the latter case, other fields will be set to their reset value.

Source

pub fn from_write<F, T>(&self, f: F) -> T
where F: FnOnce(&mut W<REG>) -> T,

Writes bits to a Writable register and produce a value.

You can write raw bits into a register:

periph.reg.write_and(|w| unsafe { w.bits(rawbits); });

or write only the fields you need:

periph.reg.write_and(|w| {
    w.field1().bits(newfield1bits)
        .field2().set_bit()
        .field3().variant(VARIANT);
});

or an alternative way of saying the same:

periph.reg.write_and(|w| {
    w.field1().bits(newfield1bits);
    w.field2().set_bit();
    w.field3().variant(VARIANT);
});

In the latter case, other fields will be set to their reset value.

Values can be returned from the closure:

let state = periph.reg.write_and(|w| State::set(w.field1()));
Source§

impl<REG: Writable> Reg<REG>

Source

pub unsafe fn write_with_zero<F>(&self, f: F) -> REG::Ux
where F: FnOnce(&mut W<REG>) -> &mut W<REG>,

Writes 0 to a Writable register.

Similar to write, but unused bits will contain 0.

§Safety

Unsafe to use with registers which don’t allow to write 0.

Source

pub unsafe fn from_write_with_zero<F, T>(&self, f: F) -> T
where F: FnOnce(&mut W<REG>) -> T,

Writes 0 to a Writable register and produces a value.

Similar to write, but unused bits will contain 0.

§Safety

Unsafe to use with registers which don’t allow to write 0.

Source§

impl<REG: Readable + Writable> Reg<REG>

Source

pub fn modify<F>(&self, f: F) -> REG::Ux
where for<'w> F: FnOnce(&R<REG>, &'w mut W<REG>) -> &'w mut W<REG>,

Modifies the contents of the register by reading and then writing it.

E.g. to do a read-modify-write sequence to change parts of a register:

periph.reg.modify(|r, w| unsafe { w.bits(
   r.bits() | 3
) });

or

periph.reg.modify(|_, w| w
    .field1().bits(newfield1bits)
    .field2().set_bit()
    .field3().variant(VARIANT)
);

or an alternative way of saying the same:

periph.reg.modify(|_, w| {
    w.field1().bits(newfield1bits);
    w.field2().set_bit();
    w.field3().variant(VARIANT)
});

Other fields will have the value they had before the call to modify.

Source

pub fn from_modify<F, T>(&self, f: F) -> T
where for<'w> F: FnOnce(&R<REG>, &'w mut W<REG>) -> T,

Modifies the contents of the register by reading and then writing it and produces a value.

E.g. to do a read-modify-write sequence to change parts of a register:

let bits = periph.reg.modify(|r, w| {
    let new_bits = r.bits() | 3;
    unsafe {
        w.bits(new_bits);
    }

    new_bits
});

or

periph.reg.modify(|_, w| {
    w.field1().bits(newfield1bits)
        .field2().set_bit()
        .field3().variant(VARIANT);
});

or an alternative way of saying the same:

periph.reg.modify(|_, w| {
    w.field1().bits(newfield1bits);
    w.field2().set_bit();
    w.field3().variant(VARIANT);
});

Other fields will have the value they had before the call to modify.

Trait Implementations

Source§

impl<REG: Readable> Debug for Reg<REG>
where R<REG>: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<REG: RegisterSpec> Send for Reg<REG>
where REG::Ux: Send,