Skip to content

Commit

Permalink
feat: Allow the construction of systick Delay using the clock::v2 API (
Browse files Browse the repository at this point in the history
  • Loading branch information
rnd-ash authored Jan 6, 2025
1 parent 63ea8cb commit b0e341e
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions hal/src/delay.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//! Delays
use atsamd_hal_macros::hal_cfg;
use cortex_m::peripheral::syst::SystClkSource;
use cortex_m::peripheral::SYST;

Expand All @@ -8,6 +9,12 @@ use crate::ehal::delay::DelayNs;
use crate::ehal_02;
use crate::time::Hertz;

#[hal_cfg("rtc-d5x")]
use crate::typelevel::Increment;

#[hal_cfg("rtc-d5x")]
use crate::clock::v2::{gclk::Gclk0Id, Source};

/// System timer (SysTick) as a delay provider
pub struct Delay {
sysclock: Hertz,
Expand All @@ -25,6 +32,23 @@ impl Delay {
}
}

#[hal_cfg("rtc-d5x")]
/// Configures the system timer (SysTick) as a delay provide, compatible
/// with the V2 clocking API
pub fn new_with_source<S>(mut syst: SYST, gclk0: S) -> (Self, S::Inc)
where
S: Source<Id = Gclk0Id> + Increment,
{
syst.set_clock_source(SystClkSource::Core);
(
Delay {
syst,
sysclock: gclk0.freq(),
},
gclk0.inc(),
)
}

/// Releases the system timer (SysTick) resource
pub fn free(self) -> SYST {
self.syst
Expand Down

0 comments on commit b0e341e

Please sign in to comment.