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