Skip to content

Commit cf5dbcd

Browse files
committed
Remove dependence on embedded-hal for Delay
1 parent 1a4e096 commit cf5dbcd

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

src/delay.rs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ impl Delay {
2929
self.syst
3030
}
3131

32-
fn _delay_us(&mut self, us: u32) {
32+
/// Delay using the Cortex-M systick for a certain duration, µs.
33+
pub fn delay_us(&mut self, us: u32) {
3334
let ticks = (us as u64) * (self.ahb_frequency as u64) / 1_000_000;
3435

3536
let full_cycles = ticks >> 24;
@@ -54,17 +55,22 @@ impl Delay {
5455

5556
self.syst.disable_counter();
5657
}
58+
59+
/// Delay using the Cortex-M systick for a certain duration, ms.
60+
pub fn delay_ms(&mut self, ms: u32) {
61+
self.delay_us(ms * 1_000);
62+
}
5763
}
5864

5965
impl DelayMs<u32> for Delay {
6066
#[inline]
6167
fn delay_ms(&mut self, mut ms: u32) {
6268
// 4294967 is the highest u32 value which you can multiply by 1000 without overflow
6369
while ms > 4294967 {
64-
self.delay_us(4294967000u32);
70+
Delay::delay_us(self, 4294967000u32);
6571
ms -= 4294967;
6672
}
67-
self.delay_us(ms * 1_000);
73+
Delay::delay_us(self, ms * 1_000);
6874
}
6975
}
7076

@@ -73,28 +79,28 @@ impl DelayMs<i32> for Delay {
7379
#[inline(always)]
7480
fn delay_ms(&mut self, ms: i32) {
7581
assert!(ms >= 0);
76-
self.delay_ms(ms as u32);
82+
Delay::delay_ms(self, ms as u32);
7783
}
7884
}
7985

8086
impl DelayMs<u16> for Delay {
8187
#[inline(always)]
8288
fn delay_ms(&mut self, ms: u16) {
83-
self.delay_ms(u32::from(ms));
89+
Delay::delay_ms(self, u32::from(ms));
8490
}
8591
}
8692

8793
impl DelayMs<u8> for Delay {
8894
#[inline(always)]
8995
fn delay_ms(&mut self, ms: u8) {
90-
self.delay_ms(u32::from(ms));
96+
Delay::delay_ms(self, u32::from(ms));
9197
}
9298
}
9399

94100
impl DelayUs<u32> for Delay {
95101
#[inline]
96102
fn delay_us(&mut self, us: u32) {
97-
self._delay_us(us);
103+
Delay::delay_us(self, us);
98104
}
99105
}
100106

@@ -103,20 +109,20 @@ impl DelayUs<i32> for Delay {
103109
#[inline(always)]
104110
fn delay_us(&mut self, us: i32) {
105111
assert!(us >= 0);
106-
self.delay_us(us as u32);
112+
Delay::delay_us(self, us as u32);
107113
}
108114
}
109115

110116
impl DelayUs<u16> for Delay {
111117
#[inline(always)]
112118
fn delay_us(&mut self, us: u16) {
113-
self.delay_us(u32::from(us))
119+
Delay::delay_us(self, u32::from(us))
114120
}
115121
}
116122

117123
impl DelayUs<u8> for Delay {
118124
#[inline(always)]
119125
fn delay_us(&mut self, us: u8) {
120-
self.delay_us(u32::from(us))
126+
Delay::delay_us(self, u32::from(us))
121127
}
122128
}

0 commit comments

Comments
 (0)