embassy-mcxa

Crates

git

Versions

mcx-a256

Flavors

CoreSleep

Enum CoreSleep 

Source
#[non_exhaustive]
pub enum CoreSleep { WfeUngated, WfeGated, DeepSleep, }
Expand description

Maximum sleep depth for the CPU core

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

WfeUngated

System will sleep using WFE when idle, but the CPU clock domain will not ever be gated. This mode uses the most power, but allows for debugging to continue uninterrupted.

With this setting, the system never leaves the “Active” configuration mode.

§

WfeGated

The system will sleep using WFE when idle, and the CPU clock domain will be be gated. If configured with FlashSleep, the internal flash may be gated as well.

§WARNING

Enabling this mode has potential danger to soft-lock the system!

  • This mode WILL detach the debugging/RTT/defmt session if active upon first sleep.
  • This mode WILL also require ISP mode recovery in order to re-flash if the core becomes “stuck” in sleep.
§

DeepSleep

The system will go to deep sleep when idle, and the CPU clock domain will be be gated. If configured with FlashSleep, the internal flash may be gated as well.

This will also move the system into the “low power” state, which will disable any clocks not configured as `PoweredClock::AlwaysActive“.

§TODO

For now, this REQUIRES calling unsafe okay_but_actually_enable_deep_sleep() otherwise we’d ALWAYS go to deep sleep on every WFE. We need to implement a custom executor that does proper go-to-deepsleep and come-back-from-deepsleep before un-chickening this. If the method isn’t called, we just set to WfeGated instead.

§WARNING

Enabling this mode has potential danger to soft-lock the system!

  • This mode WILL detach the debugging/RTT/defmt session if active upon first sleep.
  • This mode WILL also require ISP mode recovery in order to re-flash if the core becomes “stuck” in sleep.

Trait Implementations§

Source§

impl Clone for CoreSleep

Source§

fn clone(&self) -> CoreSleep

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CoreSleep

Source§

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

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

impl Default for CoreSleep

Source§

fn default() -> CoreSleep

Returns the “default value” for a type. Read more
Source§

impl Copy for CoreSleep

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.