aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32/src/rcc/mod.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-10-23 01:48:09 +0200
committerDario Nieuwenhuis <[email protected]>2023-10-23 17:36:21 +0200
commita39ae12edcf23935df82d547fb2d997ca6b7c8d5 (patch)
treed13df6dec747ab5d3af23c7dac1b12c085b26cfd /embassy-stm32/src/rcc/mod.rs
parent0ef1cb29f70c71d3c85f5b8b4ad3c7ce60babba8 (diff)
stm32/rcc: misc cleanups.
Diffstat (limited to 'embassy-stm32/src/rcc/mod.rs')
-rw-r--r--embassy-stm32/src/rcc/mod.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/embassy-stm32/src/rcc/mod.rs b/embassy-stm32/src/rcc/mod.rs
index 4f3d5b98b..8cf2d6ab0 100644
--- a/embassy-stm32/src/rcc/mod.rs
+++ b/embassy-stm32/src/rcc/mod.rs
@@ -246,3 +246,33 @@ pub(crate) mod sealed {
246} 246}
247 247
248pub trait RccPeripheral: sealed::RccPeripheral + 'static {} 248pub trait RccPeripheral: sealed::RccPeripheral + 'static {}
249
250#[allow(unused)]
251mod util {
252 use crate::time::Hertz;
253
254 pub fn calc_pclk<D>(hclk: Hertz, ppre: D) -> (Hertz, Hertz)
255 where
256 Hertz: core::ops::Div<D, Output = Hertz>,
257 {
258 let pclk = hclk / ppre;
259 let pclk_tim = if hclk == pclk { pclk } else { pclk * 2u32 };
260 (pclk, pclk_tim)
261 }
262
263 pub fn all_equal<T: Eq>(mut iter: impl Iterator<Item = T>) -> bool {
264 let Some(x) = iter.next() else { return true };
265 if !iter.all(|y| y == x) {
266 return false;
267 }
268 true
269 }
270
271 pub fn get_equal<T: Eq>(mut iter: impl Iterator<Item = T>) -> Result<Option<T>, ()> {
272 let Some(x) = iter.next() else { return Ok(None) };
273 if !iter.all(|y| y == x) {
274 return Err(());
275 }
276 Ok(Some(x))
277 }
278}