@@ -69,13 +69,12 @@ pub struct RegisterBlock {
69
69
70
70
impl NVIC {
71
71
/// Clears `interrupt`'s pending state
72
+ #[ deprecated( since = "0.5.8" , note = "Use `NVIC::unpend`" ) ]
72
73
pub fn clear_pending < I > ( & mut self , interrupt : I )
73
74
where
74
75
I : Nr ,
75
76
{
76
- let nr = interrupt. nr ( ) ;
77
-
78
- unsafe { self . icpr [ usize:: from ( nr / 32 ) ] . write ( 1 << ( nr % 32 ) ) }
77
+ Self :: unpend ( interrupt)
79
78
}
80
79
81
80
/// Disables `interrupt`
@@ -161,13 +160,23 @@ impl NVIC {
161
160
}
162
161
163
162
/// Forces `interrupt` into pending state
164
- pub fn set_pending < I > ( & mut self , interrupt : I )
163
+ pub fn pend < I > ( interrupt : I )
165
164
where
166
165
I : Nr ,
167
166
{
168
167
let nr = interrupt. nr ( ) ;
169
168
170
- unsafe { self . ispr [ usize:: from ( nr / 32 ) ] . write ( 1 << ( nr % 32 ) ) }
169
+ // NOTE(unsafe) atomic stateless write; ICPR doesn't store any state
170
+ unsafe { ( * Self :: ptr ( ) ) . ispr [ usize:: from ( nr / 32 ) ] . write ( 1 << ( nr % 32 ) ) }
171
+ }
172
+
173
+ /// Forces `interrupt` into pending state
174
+ #[ deprecated( since = "0.5.8" , note = "Use `NVIC::pend`" ) ]
175
+ pub fn set_pending < I > ( & mut self , interrupt : I )
176
+ where
177
+ I : Nr ,
178
+ {
179
+ Self :: pend ( interrupt)
171
180
}
172
181
173
182
/// Sets the "priority" of `interrupt` to `prio`
@@ -203,6 +212,17 @@ impl NVIC {
203
212
}
204
213
}
205
214
215
+ /// Clears `interrupt`'s pending state
216
+ pub fn unpend < I > ( interrupt : I )
217
+ where
218
+ I : Nr ,
219
+ {
220
+ let nr = interrupt. nr ( ) ;
221
+
222
+ // NOTE(unsafe) atomic stateless write; ICPR doesn't store any state
223
+ unsafe { ( * Self :: ptr ( ) ) . icpr [ usize:: from ( nr / 32 ) ] . write ( 1 << ( nr % 32 ) ) }
224
+ }
225
+
206
226
#[ cfg( armv6m) ]
207
227
fn ipr_index < I > ( interrupt : & I ) -> usize
208
228
where
0 commit comments