sleep
This commit is contained in:
@@ -57,5 +57,11 @@ pub async fn execute_low_power(
|
||||
}
|
||||
}
|
||||
}
|
||||
LowPowerCmd::Sleep => {
|
||||
info!("Entering Sleep mode (WFI)...");
|
||||
use crate::sleep::sleep::{enter_sleep_mode, SleepEntry};
|
||||
enter_sleep_mode(SleepEntry::Wfi);
|
||||
info!("Woke up from Sleep mode.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@ pub mod standby;
|
||||
pub mod shutdown;
|
||||
pub mod stop;
|
||||
pub mod handler;
|
||||
pub mod sleep;
|
||||
|
||||
pub use stop::StopEntry;
|
||||
|
||||
19
semestralka_2_uart/src/sleep/sleep.rs
Normal file
19
semestralka_2_uart/src/sleep/sleep.rs
Normal file
@@ -0,0 +1,19 @@
|
||||
// src/sleep/sleep.rs
|
||||
|
||||
use cortex_m::Peripherals;
|
||||
|
||||
#[derive(Clone, Copy, Debug, defmt::Format)]
|
||||
pub enum SleepEntry {
|
||||
Wfi,
|
||||
Wfe,
|
||||
}
|
||||
|
||||
pub fn enter_sleep_mode(entry: SleepEntry) {
|
||||
let mut core = unsafe { Peripherals::steal() };
|
||||
core.SCB.clear_sleepdeep();
|
||||
|
||||
match entry {
|
||||
SleepEntry::Wfi => cortex_m::asm::wfi(),
|
||||
SleepEntry::Wfe => cortex_m::asm::wfe(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user