Type Alias SM_INSTR

Source
pub type SM_INSTR = Reg<SM_INSTR_SPEC>;
Expand description

SM_INSTR (rw) register accessor: Read to see the instruction currently addressed by state machine 0’s program counter
Write to execute an instruction immediately (including jumps) and then resume execution.

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

For information about available fields see sm_instr module

Aliased Type§

struct SM_INSTR { /* private fields */ }

Implementations

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

impl<REG: Writable> Reg<REG>

Source

pub unsafe fn write_with_zero<F>(&self, f: F)
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§

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

Source

pub fn modify<F>(&self, f: F)
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§

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

Trait Implementations

Source§

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