File tree 1 file changed +23
-1
lines changed 1 file changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -123,8 +123,13 @@ pub trait FlashExt {
123
123
fn address ( & self ) -> usize ;
124
124
/// Size in bytes
125
125
fn len ( & self ) -> usize ;
126
- /// Access to memory banks
126
+ /// Split the flash into its banks.
127
127
fn split ( self ) -> ( LockedFlashBank , Option < LockedFlashBank > ) ;
128
+ /// Access to memory banks.
129
+ fn access_banks < T > (
130
+ & mut self ,
131
+ f : impl FnOnce ( & mut LockedFlashBank , Option < & mut LockedFlashBank > ) -> T ,
132
+ ) -> T ;
128
133
///
129
134
fn access_bank1 < F , T > ( & mut self , f : F ) -> T
130
135
where
@@ -148,6 +153,23 @@ impl FlashExt for FLASH {
148
153
} ;
149
154
f ( & mut bank)
150
155
}
156
+ fn access_banks < T > (
157
+ & mut self ,
158
+ f : impl FnOnce ( & mut LockedFlashBank , Option < & mut LockedFlashBank > ) -> T ,
159
+ ) -> T {
160
+ let len = self . len ( ) ;
161
+ let mut bank1 = LockedFlashBank {
162
+ bank_index : 1 ,
163
+ base : 0x0800_0000 ,
164
+ len : if self . dual_bank ( ) { len / 2 } else { len } ,
165
+ } ;
166
+ let mut bank2 = self . dual_bank ( ) . then_some ( LockedFlashBank {
167
+ bank_index : 2 ,
168
+ base : 0x0810_0000 ,
169
+ len : self . len ( ) / 2 ,
170
+ } ) ;
171
+ f ( & mut bank1, bank2. as_mut ( ) )
172
+ }
151
173
fn address ( & self ) -> usize {
152
174
0x0800_0000
153
175
}
You can’t perform that action at this time.
0 commit comments