11//! Nested Vector Interrupt Controller
22
3+ use cortex_m_types:: InterruptNumber ;
34use volatile_register:: RW ;
45#[ cfg( not( armv6m) ) ]
56use volatile_register:: { RO , WO } ;
67
7- use crate :: interrupt:: InterruptNumber ;
88use crate :: peripheral:: NVIC ;
99
1010/// Register block
@@ -101,7 +101,7 @@ impl NVIC {
101101 let nr = interrupt. number ( ) ;
102102
103103 unsafe {
104- self . stir . write ( u32 :: from ( nr ) ) ;
104+ self . stir . write ( nr as u32 ) ;
105105 }
106106 }
107107
@@ -113,7 +113,7 @@ impl NVIC {
113113 {
114114 let nr = interrupt. number ( ) ;
115115 // NOTE(unsafe) this is a write to a stateless register
116- unsafe { ( * Self :: PTR ) . icer [ usize :: from ( nr / 32 ) ] . write ( 1 << ( nr % 32 ) ) }
116+ unsafe { ( * Self :: PTR ) . icer [ nr / 32 ] . write ( 1 << ( nr % 32 ) ) }
117117 }
118118
119119 /// Enables `interrupt`
@@ -127,7 +127,7 @@ impl NVIC {
127127 unsafe {
128128 let nr = interrupt. number ( ) ;
129129 // NOTE(ptr) this is a write to a stateless register
130- ( * Self :: PTR ) . iser [ usize :: from ( nr / 32 ) ] . write ( 1 << ( nr % 32 ) )
130+ ( * Self :: PTR ) . iser [ nr / 32 ] . write ( 1 << ( nr % 32 ) )
131131 }
132132 }
133133
@@ -145,7 +145,7 @@ impl NVIC {
145145 {
146146 let nr = interrupt. number ( ) ;
147147 // NOTE(unsafe) atomic read with no side effects
148- unsafe { ( * Self :: PTR ) . ipr [ usize :: from ( nr ) ] . read ( ) }
148+ unsafe { ( * Self :: PTR ) . ipr [ nr ] . read ( ) }
149149 }
150150
151151 #[ cfg( armv6m) ]
@@ -168,7 +168,7 @@ impl NVIC {
168168 let mask = 1 << ( nr % 32 ) ;
169169
170170 // NOTE(unsafe) atomic read with no side effects
171- unsafe { ( ( * Self :: PTR ) . iabr [ usize :: from ( nr / 32 ) ] . read ( ) & mask) == mask }
171+ unsafe { ( ( * Self :: PTR ) . iabr [ nr / 32 ] . read ( ) & mask) == mask }
172172 }
173173
174174 /// Checks if `interrupt` is enabled
@@ -181,7 +181,7 @@ impl NVIC {
181181 let mask = 1 << ( nr % 32 ) ;
182182
183183 // NOTE(unsafe) atomic read with no side effects
184- unsafe { ( ( * Self :: PTR ) . iser [ usize :: from ( nr / 32 ) ] . read ( ) & mask) == mask }
184+ unsafe { ( ( * Self :: PTR ) . iser [ nr / 32 ] . read ( ) & mask) == mask }
185185 }
186186
187187 /// Checks if `interrupt` is pending
@@ -194,7 +194,7 @@ impl NVIC {
194194 let mask = 1 << ( nr % 32 ) ;
195195
196196 // NOTE(unsafe) atomic read with no side effects
197- unsafe { ( ( * Self :: PTR ) . ispr [ usize :: from ( nr / 32 ) ] . read ( ) & mask) == mask }
197+ unsafe { ( ( * Self :: PTR ) . ispr [ nr / 32 ] . read ( ) & mask) == mask }
198198 }
199199
200200 /// Forces `interrupt` into pending state
@@ -206,7 +206,7 @@ impl NVIC {
206206 let nr = interrupt. number ( ) ;
207207
208208 // NOTE(unsafe) atomic stateless write; ICPR doesn't store any state
209- unsafe { ( * Self :: PTR ) . ispr [ usize :: from ( nr / 32 ) ] . write ( 1 << ( nr % 32 ) ) }
209+ unsafe { ( * Self :: PTR ) . ispr [ nr / 32 ] . write ( 1 << ( nr % 32 ) ) }
210210 }
211211
212212 /// Sets the "priority" of `interrupt` to `prio`
@@ -230,7 +230,7 @@ impl NVIC {
230230 #[ cfg( not( armv6m) ) ]
231231 {
232232 let nr = interrupt. number ( ) ;
233- self . ipr [ usize :: from ( nr ) ] . write ( prio)
233+ self . ipr [ nr ] . write ( prio)
234234 }
235235
236236 #[ cfg( armv6m) ]
@@ -254,7 +254,7 @@ impl NVIC {
254254 let nr = interrupt. number ( ) ;
255255
256256 // NOTE(unsafe) atomic stateless write; ICPR doesn't store any state
257- unsafe { ( * Self :: PTR ) . icpr [ usize :: from ( nr / 32 ) ] . write ( 1 << ( nr % 32 ) ) }
257+ unsafe { ( * Self :: PTR ) . icpr [ nr / 32 ] . write ( 1 << ( nr % 32 ) ) }
258258 }
259259
260260 #[ cfg( armv6m) ]
@@ -263,7 +263,7 @@ impl NVIC {
263263 where
264264 I : InterruptNumber ,
265265 {
266- usize :: from ( interrupt. number ( ) ) / 4
266+ interrupt. number ( ) / 4
267267 }
268268
269269 #[ cfg( armv6m) ]
@@ -272,6 +272,6 @@ impl NVIC {
272272 where
273273 I : InterruptNumber ,
274274 {
275- ( usize :: from ( interrupt. number ( ) ) % 4 ) * 8
275+ ( interrupt. number ( ) % 4 ) * 8
276276 }
277277}
0 commit comments