From 2f26c3c5f1380535c5fdd74cd39962338ed51204 Mon Sep 17 00:00:00 2001 From: xoviat Date: Wed, 5 Nov 2025 07:13:15 -0600 Subject: tests: disable rtc for h563 on non-stop --- embassy-stm32/Cargo.toml | 1 + embassy-stm32/src/rtc/mod.rs | 15 ++++++++++++++- tests/stm32/Cargo.toml | 2 +- tests/stm32/src/bin/rtc.rs | 4 ++++ tests/stm32/src/bin/stop.rs | 1 + tests/stm32/src/common.rs | 2 ++ 6 files changed, 23 insertions(+), 2 deletions(-) diff --git a/embassy-stm32/Cargo.toml b/embassy-stm32/Cargo.toml index 7c243b350..7c64c3e17 100644 --- a/embassy-stm32/Cargo.toml +++ b/embassy-stm32/Cargo.toml @@ -313,6 +313,7 @@ single-bank = [] ## internal use only _split-pins-enabled = [] +_allow-disable-rtc = [] ## internal use only _dual-core = [] diff --git a/embassy-stm32/src/rtc/mod.rs b/embassy-stm32/src/rtc/mod.rs index cbb904fd3..116b3c7ed 100644 --- a/embassy-stm32/src/rtc/mod.rs +++ b/embassy-stm32/src/rtc/mod.rs @@ -175,13 +175,21 @@ pub struct RtcConfig { /// /// A high counter frequency may impact stop power consumption pub frequency: Hertz, + + #[cfg(feature = "_allow-disable-rtc")] + /// Allow disabling the rtc, even when stop is configured + pub _disable_rtc: bool, } impl Default for RtcConfig { /// LSI with prescalers assuming 32.768 kHz. /// Raw sub-seconds in 1/256. fn default() -> Self { - RtcConfig { frequency: Hertz(256) } + RtcConfig { + frequency: Hertz(256), + #[cfg(feature = "_allow-disable-rtc")] + _disable_rtc: false, + } } } @@ -372,6 +380,11 @@ trait SealedInstance { #[cfg(feature = "low-power")] pub(crate) fn init_rtc(cs: CriticalSection, config: RtcConfig) { + #[cfg(feature = "_allow-disable-rtc")] + if config._disable_rtc { + return; + } + crate::time_driver::get_driver().set_rtc(cs, Rtc::new_inner(config)); trace!("low power: stop with rtc configured"); diff --git a/tests/stm32/Cargo.toml b/tests/stm32/Cargo.toml index e75a4ebb1..b92b47be2 100644 --- a/tests/stm32/Cargo.toml +++ b/tests/stm32/Cargo.toml @@ -73,7 +73,7 @@ teleprobe-meta = "1" embassy-sync = { version = "0.7.2", path = "../../embassy-sync", features = ["defmt"] } embassy-executor = { version = "0.9.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "defmt"] } embassy-time = { version = "0.5.0", path = "../../embassy-time", features = ["defmt", "tick-hz-131_072", "defmt-timestamp-uptime"] } -embassy-stm32 = { version = "0.4.0", path = "../../embassy-stm32", features = [ "defmt", "unstable-pac", "memory-x", "time-driver-any"] } +embassy-stm32 = { version = "0.4.0", path = "../../embassy-stm32", features = [ "defmt", "unstable-pac", "memory-x", "time-driver-any", "_allow-disable-rtc"] } embassy-futures = { version = "0.1.2", path = "../../embassy-futures" } embassy-stm32-wpan = { version = "0.1.0", path = "../../embassy-stm32-wpan", optional = true, features = ["defmt", "stm32wb55rg", "ble"] } embassy-net = { version = "0.7.1", path = "../../embassy-net", features = ["defmt", "tcp", "udp", "dhcpv4", "medium-ethernet"] } diff --git a/tests/stm32/src/bin/rtc.rs b/tests/stm32/src/bin/rtc.rs index 43cf4a411..eb27af4ca 100644 --- a/tests/stm32/src/bin/rtc.rs +++ b/tests/stm32/src/bin/rtc.rs @@ -19,6 +19,10 @@ use embassy_time::Timer; async fn main(_spawner: Spawner) { let mut config = config(); config.rcc.ls = LsConfig::default_lse(); + #[cfg(feature = "stop")] + { + config.rtc._disable_rtc = false; + } let p = init_with_config(config); info!("Hello World!"); diff --git a/tests/stm32/src/bin/stop.rs b/tests/stm32/src/bin/stop.rs index 4b3a775bb..1fe65d867 100644 --- a/tests/stm32/src/bin/stop.rs +++ b/tests/stm32/src/bin/stop.rs @@ -49,6 +49,7 @@ async fn async_main(spawner: Spawner) { let mut config = Config::default(); config.rcc.ls = LsConfig::default_lse(); + config.rtc._disable_rtc = false; // System Clock seems cannot be greater than 16 MHz #[cfg(any(feature = "stm32h563zi", feature = "stm32h503rb"))] diff --git a/tests/stm32/src/common.rs b/tests/stm32/src/common.rs index 2bd934d6f..096cce947 100644 --- a/tests/stm32/src/common.rs +++ b/tests/stm32/src/common.rs @@ -468,6 +468,8 @@ pub fn config() -> Config { config.rcc.apb3_pre = APBPrescaler::DIV1; config.rcc.sys = Sysclk::PLL1_P; config.rcc.voltage_scale = VoltageScale::Scale0; + + config.rtc._disable_rtc = true; } #[cfg(feature = "stm32h503rb")] -- cgit