Skip to content

Commit 47246ec

Browse files
Merge #344
344: Remove dependence on embedded-hal for Delay r=adamgreig a=David-OConnor Fixes #343 No functional changes. Allows you to use Delay as previously, or without including or importing `embedded-hal`. Co-authored-by: David O'Connor <[email protected]>
2 parents 1a4e096 + 4a393e0 commit 47246ec

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

src/delay.rs

+20-12
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ impl Delay {
2929
self.syst
3030
}
3131

32-
fn _delay_us(&mut self, us: u32) {
33-
let ticks = (us as u64) * (self.ahb_frequency as u64) / 1_000_000;
32+
/// Delay using the Cortex-M systick for a certain duration, in µs.
33+
#[allow(clippy::missing_inline_in_public_items)]
34+
pub fn delay_us(&mut self, us: u32) {
35+
let ticks = (u64::from(us)) * (u64::from(self.ahb_frequency)) / 1_000_000;
3436

3537
let full_cycles = ticks >> 24;
3638
if full_cycles > 0 {
@@ -54,11 +56,10 @@ impl Delay {
5456

5557
self.syst.disable_counter();
5658
}
57-
}
5859

59-
impl DelayMs<u32> for Delay {
60+
/// Delay using the Cortex-M systick for a certain duration, in ms.
6061
#[inline]
61-
fn delay_ms(&mut self, mut ms: u32) {
62+
pub fn delay_ms(&mut self, mut ms: u32) {
6263
// 4294967 is the highest u32 value which you can multiply by 1000 without overflow
6364
while ms > 4294967 {
6465
self.delay_us(4294967000u32);
@@ -68,33 +69,40 @@ impl DelayMs<u32> for Delay {
6869
}
6970
}
7071

72+
impl DelayMs<u32> for Delay {
73+
#[inline]
74+
fn delay_ms(&mut self, ms: u32) {
75+
Delay::delay_ms(self, ms);
76+
}
77+
}
78+
7179
// This is a workaround to allow `delay_ms(42)` construction without specifying a type.
7280
impl DelayMs<i32> for Delay {
7381
#[inline(always)]
7482
fn delay_ms(&mut self, ms: i32) {
7583
assert!(ms >= 0);
76-
self.delay_ms(ms as u32);
84+
Delay::delay_ms(self, ms as u32);
7785
}
7886
}
7987

8088
impl DelayMs<u16> for Delay {
8189
#[inline(always)]
8290
fn delay_ms(&mut self, ms: u16) {
83-
self.delay_ms(u32::from(ms));
91+
Delay::delay_ms(self, u32::from(ms));
8492
}
8593
}
8694

8795
impl DelayMs<u8> for Delay {
8896
#[inline(always)]
8997
fn delay_ms(&mut self, ms: u8) {
90-
self.delay_ms(u32::from(ms));
98+
Delay::delay_ms(self, u32::from(ms));
9199
}
92100
}
93101

94102
impl DelayUs<u32> for Delay {
95103
#[inline]
96104
fn delay_us(&mut self, us: u32) {
97-
self._delay_us(us);
105+
Delay::delay_us(self, us);
98106
}
99107
}
100108

@@ -103,20 +111,20 @@ impl DelayUs<i32> for Delay {
103111
#[inline(always)]
104112
fn delay_us(&mut self, us: i32) {
105113
assert!(us >= 0);
106-
self.delay_us(us as u32);
114+
Delay::delay_us(self, us as u32);
107115
}
108116
}
109117

110118
impl DelayUs<u16> for Delay {
111119
#[inline(always)]
112120
fn delay_us(&mut self, us: u16) {
113-
self.delay_us(u32::from(us))
121+
Delay::delay_us(self, u32::from(us))
114122
}
115123
}
116124

117125
impl DelayUs<u8> for Delay {
118126
#[inline(always)]
119127
fn delay_us(&mut self, us: u8) {
120-
self.delay_us(u32::from(us))
128+
Delay::delay_us(self, u32::from(us))
121129
}
122130
}

0 commit comments

Comments
 (0)