aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMathisDerooNXP <[email protected]>2025-12-04 09:42:46 -0800
committerGitHub <[email protected]>2025-12-04 09:42:46 -0800
commit22bae2d80153003af4637c4b0cc26d52858f5228 (patch)
tree61860b41c823f499984a369f6762489a1766cce8 /examples
parentcc918e997a8709c213c173edb8657ff269dae7a4 (diff)
Rtc support v2 (#91)
Signed-off-by: Mathis Deroo <[email protected]> Signed-off-by: Felipe Balbi <[email protected]>
Diffstat (limited to 'examples')
-rw-r--r--examples/src/bin/rtc_alarm.rs39
1 files changed, 6 insertions, 33 deletions
diff --git a/examples/src/bin/rtc_alarm.rs b/examples/src/bin/rtc_alarm.rs
index a7800a2d1..fe355888b 100644
--- a/examples/src/bin/rtc_alarm.rs
+++ b/examples/src/bin/rtc_alarm.rs
@@ -2,23 +2,14 @@
2#![no_main] 2#![no_main]
3 3
4use embassy_executor::Spawner; 4use embassy_executor::Spawner;
5use embassy_mcxa as hal;
6use hal::rtc::{RtcDateTime, RtcInterruptEnable};
7use hal::InterruptExt;
8
9type MyRtc = hal::rtc::Rtc<'static, hal::rtc::Rtc0>;
10
11use embassy_mcxa::bind_interrupts; 5use embassy_mcxa::bind_interrupts;
12use {defmt_rtt as _, panic_probe as _}; 6use hal::rtc::{InterruptHandler, Rtc, RtcDateTime};
7use {defmt_rtt as _, embassy_mcxa as hal, panic_probe as _};
13 8
14bind_interrupts!(struct Irqs { 9bind_interrupts!(struct Irqs {
15 RTC => hal::rtc::RtcHandler; 10 RTC => InterruptHandler<hal::rtc::Rtc0>;
16}); 11});
17 12
18#[used]
19#[no_mangle]
20static KEEP_RTC: unsafe extern "C" fn() = RTC;
21
22#[embassy_executor::main] 13#[embassy_executor::main]
23async fn main(_spawner: Spawner) { 14async fn main(_spawner: Spawner) {
24 let p = hal::init(hal::config::Config::default()); 15 let p = hal::init(hal::config::Config::default());
@@ -27,7 +18,7 @@ async fn main(_spawner: Spawner) {
27 18
28 let rtc_config = hal::rtc::get_default_config(); 19 let rtc_config = hal::rtc::get_default_config();
29 20
30 let rtc = MyRtc::new(p.RTC0, rtc_config); 21 let mut rtc = Rtc::new(p.RTC0, Irqs, rtc_config);
31 22
32 let now = RtcDateTime { 23 let now = RtcDateTime {
33 year: 2025, 24 year: 2025,
@@ -46,29 +37,11 @@ async fn main(_spawner: Spawner) {
46 let mut alarm = now; 37 let mut alarm = now;
47 alarm.second += 10; 38 alarm.second += 10;
48 39
49 rtc.set_alarm(alarm);
50 defmt::info!("Alarm set for: 2025-10-15 14:30:10 (+10 seconds)"); 40 defmt::info!("Alarm set for: 2025-10-15 14:30:10 (+10 seconds)");
51
52 rtc.set_interrupt(RtcInterruptEnable::RTC_ALARM_INTERRUPT_ENABLE);
53
54 unsafe {
55 hal::interrupt::RTC.enable();
56 }
57
58 unsafe {
59 cortex_m::interrupt::enable();
60 }
61
62 rtc.start();
63
64 defmt::info!("RTC started, waiting for alarm..."); 41 defmt::info!("RTC started, waiting for alarm...");
65 42
66 loop { 43 rtc.wait_for_alarm(alarm).await;
67 if rtc.is_alarm_triggered() { 44 defmt::info!("*** ALARM TRIGGERED! ***");
68 defmt::info!("*** ALARM TRIGGERED! ***");
69 break;
70 }
71 }
72 45
73 defmt::info!("Example complete - Test PASSED!"); 46 defmt::info!("Example complete - Test PASSED!");
74} 47}