From 59a5e84df584faed5676de027601d09772be55f7 Mon Sep 17 00:00:00 2001
From: aidant <15520814+aidant@users.noreply.github.com>
Date: Sun, 27 Aug 2023 18:36:35 +1000
Subject: [PATCH 1/2] fix day of the week conversion

---
 embassy-stm32/src/rtc/datetime.rs | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/embassy-stm32/src/rtc/datetime.rs b/embassy-stm32/src/rtc/datetime.rs
index a9c48d88d..3efe9be5d 100644
--- a/embassy-stm32/src/rtc/datetime.rs
+++ b/embassy-stm32/src/rtc/datetime.rs
@@ -89,7 +89,7 @@ pub enum DayOfWeek {
 #[cfg(feature = "chrono")]
 impl From<chrono::Weekday> for DayOfWeek {
     fn from(weekday: Weekday) -> Self {
-        day_of_week_from_u8(weekday.number_from_monday() as u8).unwrap()
+        day_of_week_from_u8(weekday.num_days_from_monday() as u8).unwrap()
     }
 }
 

From db6f9afa2e4b1da47a655a59c4f09a60a3a87a50 Mon Sep 17 00:00:00 2001
From: aidant <15520814+aidant@users.noreply.github.com>
Date: Sun, 27 Aug 2023 18:37:10 +1000
Subject: [PATCH 2/2] fix hanging on rtc example

---
 examples/stm32f4/src/bin/rtc.rs | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/examples/stm32f4/src/bin/rtc.rs b/examples/stm32f4/src/bin/rtc.rs
index 0eca58203..33c4ebfdb 100644
--- a/examples/stm32f4/src/bin/rtc.rs
+++ b/examples/stm32f4/src/bin/rtc.rs
@@ -5,13 +5,19 @@
 use chrono::{NaiveDate, NaiveDateTime};
 use defmt::*;
 use embassy_executor::Spawner;
-use embassy_stm32::rtc::{Rtc, RtcConfig};
+use embassy_stm32::{
+    rtc::{Rtc, RtcClockSource, RtcConfig},
+    Config,
+};
 use embassy_time::{Duration, Timer};
 use {defmt_rtt as _, panic_probe as _};
 
 #[embassy_executor::main]
 async fn main(_spawner: Spawner) {
-    let p = embassy_stm32::init(Default::default());
+    let mut config = Config::default();
+    config.rcc.rtc = Option::Some(RtcClockSource::LSI);
+    let p = embassy_stm32::init(config);
+
     info!("Hello World!");
 
     let now = NaiveDate::from_ymd_opt(2020, 5, 15)
@@ -23,8 +29,11 @@ async fn main(_spawner: Spawner) {
 
     rtc.set_datetime(now.into()).expect("datetime not set");
 
-    // In reality the delay would be much longer
-    Timer::after(Duration::from_millis(20000)).await;
+    loop {
+        let now: NaiveDateTime = rtc.now().unwrap().into();
 
-    let _then: NaiveDateTime = rtc.now().unwrap().into();
+        info!("{}", now.timestamp());
+
+        Timer::after(Duration::from_millis(1000)).await;
+    }
 }