@@ -29,8 +29,10 @@ impl Delay {
29
29
self . syst
30
30
}
31
31
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 ;
34
36
35
37
let full_cycles = ticks >> 24 ;
36
38
if full_cycles > 0 {
@@ -54,11 +56,10 @@ impl Delay {
54
56
55
57
self . syst . disable_counter ( ) ;
56
58
}
57
- }
58
59
59
- impl DelayMs < u32 > for Delay {
60
+ /// Delay using the Cortex-M systick for a certain duration, in ms.
60
61
#[ inline]
61
- fn delay_ms ( & mut self , mut ms : u32 ) {
62
+ pub fn delay_ms ( & mut self , mut ms : u32 ) {
62
63
// 4294967 is the highest u32 value which you can multiply by 1000 without overflow
63
64
while ms > 4294967 {
64
65
self . delay_us ( 4294967000u32 ) ;
@@ -68,33 +69,40 @@ impl DelayMs<u32> for Delay {
68
69
}
69
70
}
70
71
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
+
71
79
// This is a workaround to allow `delay_ms(42)` construction without specifying a type.
72
80
impl DelayMs < i32 > for Delay {
73
81
#[ inline( always) ]
74
82
fn delay_ms ( & mut self , ms : i32 ) {
75
83
assert ! ( ms >= 0 ) ;
76
- self . delay_ms ( ms as u32 ) ;
84
+ Delay :: delay_ms ( self , ms as u32 ) ;
77
85
}
78
86
}
79
87
80
88
impl DelayMs < u16 > for Delay {
81
89
#[ inline( always) ]
82
90
fn delay_ms ( & mut self , ms : u16 ) {
83
- self . delay_ms ( u32:: from ( ms) ) ;
91
+ Delay :: delay_ms ( self , u32:: from ( ms) ) ;
84
92
}
85
93
}
86
94
87
95
impl DelayMs < u8 > for Delay {
88
96
#[ inline( always) ]
89
97
fn delay_ms ( & mut self , ms : u8 ) {
90
- self . delay_ms ( u32:: from ( ms) ) ;
98
+ Delay :: delay_ms ( self , u32:: from ( ms) ) ;
91
99
}
92
100
}
93
101
94
102
impl DelayUs < u32 > for Delay {
95
103
#[ inline]
96
104
fn delay_us ( & mut self , us : u32 ) {
97
- self . _delay_us ( us) ;
105
+ Delay :: delay_us ( self , us) ;
98
106
}
99
107
}
100
108
@@ -103,20 +111,20 @@ impl DelayUs<i32> for Delay {
103
111
#[ inline( always) ]
104
112
fn delay_us ( & mut self , us : i32 ) {
105
113
assert ! ( us >= 0 ) ;
106
- self . delay_us ( us as u32 ) ;
114
+ Delay :: delay_us ( self , us as u32 ) ;
107
115
}
108
116
}
109
117
110
118
impl DelayUs < u16 > for Delay {
111
119
#[ inline( always) ]
112
120
fn delay_us ( & mut self , us : u16 ) {
113
- self . delay_us ( u32:: from ( us) )
121
+ Delay :: delay_us ( self , u32:: from ( us) )
114
122
}
115
123
}
116
124
117
125
impl DelayUs < u8 > for Delay {
118
126
#[ inline( always) ]
119
127
fn delay_us ( & mut self , us : u8 ) {
120
- self . delay_us ( u32:: from ( us) )
128
+ Delay :: delay_us ( self , u32:: from ( us) )
121
129
}
122
130
}
0 commit comments