Struct atsame54n19a_pac::generic::Reg[][src]

pub struct Reg<U, REG> { /* fields omitted */ }

This structure provides volatile access to registers.

Implementations

impl<U, REG> Reg<U, REG> where
    U: Copy
[src]

pub fn as_ptr(&self) -> *mut U[src]

Returns the underlying memory address of register.

let reg_ptr = periph.reg.as_ptr();

impl<U, REG> Reg<U, REG> where
    Self: Readable,
    U: Copy
[src]

pub fn read(&self) -> R<U, Self>[src]

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();

impl<U, REG> Reg<U, REG> where
    Self: ResetValue<Type = U> + Writable,
    U: Copy
[src]

pub fn reset(&self)[src]

Writes the reset value to Writable register.

Resets the register to its initial state.

impl<U, REG> Reg<U, REG> where
    Self: ResetValue<Type = U> + Writable,
    U: Copy
[src]

pub fn write<F>(&self, f: F) where
    F: FnOnce(&mut W<U, Self>) -> &mut W<U, Self>, 
[src]

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)
);

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

impl<U, REG> Reg<U, REG> where
    Self: Writable,
    U: Copy + Default
[src]

pub fn write_with_zero<F>(&self, f: F) where
    F: FnOnce(&mut W<U, Self>) -> &mut W<U, Self>, 
[src]

Writes 0 to a Writable register.

Similar to write, but unused bits will contain 0.

impl<U, REG> Reg<U, REG> where
    Self: Readable + Writable,
    U: Copy
[src]

pub fn modify<F>(&self, f: F) where
    F: FnOnce(&R<U, Self>, &'w mut W<U, Self>) -> &'w mut W<U, Self>, 
[src]

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)
);

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

Trait Implementations

impl<U: Send, REG> Send for Reg<U, REG>[src]

Auto Trait Implementations

impl<U, REG> !Sync for Reg<U, REG>

impl<U, REG> Unpin for Reg<U, REG> where
    REG: Unpin,
    U: Unpin

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.