File tree Expand file tree Collapse file tree 4 files changed +190
-143
lines changed Expand file tree Collapse file tree 4 files changed +190
-143
lines changed Original file line number Diff line number Diff line change @@ -143,7 +143,6 @@ impl<I2C: Instance> I2c<I2C> {
143
143
impl < I2C : Instance > I2c < I2C > {
144
144
fn i2c_init ( & self , mode : impl Into < Mode > ) {
145
145
let mode = mode. into ( ) ;
146
- use core:: cmp;
147
146
148
147
// Make sure the I2C unit is disabled so we can configure it
149
148
self . i2c . cr1 ( ) . modify ( |_, w| w. pe ( ) . clear_bit ( ) ) ;
@@ -167,21 +166,21 @@ impl<I2C: Instance> I2c<I2C> {
167
166
match mode {
168
167
Mode :: Standard { frequency } => {
169
168
presc = 3 ;
170
- scll = cmp :: max ( ( ( ( FREQ >> presc) >> 1 ) / frequency. raw ( ) ) - 1 , 255 ) as u8 ;
169
+ scll = crate :: max_u32 ( ( ( ( FREQ >> presc) >> 1 ) / frequency. raw ( ) ) - 1 , 255 ) as u8 ;
171
170
sclh = scll - 4 ;
172
171
sdadel = 2 ;
173
172
scldel = 4 ;
174
173
}
175
174
Mode :: Fast { frequency } => {
176
175
presc = 1 ;
177
- scll = cmp :: max ( ( ( ( FREQ >> presc) >> 1 ) / frequency. raw ( ) ) - 1 , 255 ) as u8 ;
176
+ scll = crate :: max_u32 ( ( ( ( FREQ >> presc) >> 1 ) / frequency. raw ( ) ) - 1 , 255 ) as u8 ;
178
177
sclh = scll - 6 ;
179
178
sdadel = 2 ;
180
179
scldel = 3 ;
181
180
}
182
181
Mode :: FastPlus { frequency } => {
183
182
presc = 0 ;
184
- scll = cmp :: max ( ( ( ( FREQ >> presc) >> 1 ) / frequency. raw ( ) ) - 4 , 255 ) as u8 ;
183
+ scll = crate :: max_u32 ( ( ( ( FREQ >> presc) >> 1 ) / frequency. raw ( ) ) - 4 , 255 ) as u8 ;
185
184
sclh = scll - 2 ;
186
185
sdadel = 0 ;
187
186
scldel = 2 ;
Original file line number Diff line number Diff line change @@ -227,3 +227,20 @@ pub trait Steal {
227
227
/// no stolen instances are passed to such software.
228
228
unsafe fn steal ( ) -> Self ;
229
229
}
230
+
231
+ #[ allow( unused) ]
232
+ const fn max_u32 ( first : u32 , second : u32 ) -> u32 {
233
+ if second > first {
234
+ second
235
+ } else {
236
+ first
237
+ }
238
+ }
239
+
240
+ const fn min_u32 ( first : u32 , second : u32 ) -> u32 {
241
+ if second < first {
242
+ second
243
+ } else {
244
+ first
245
+ }
246
+ }
Original file line number Diff line number Diff line change @@ -558,7 +558,7 @@ impl CFGR {
558
558
let sysclk = self . sysclk . unwrap_or ( pllsrcclk) ;
559
559
let sysclk_on_pll = sysclk != pllsrcclk;
560
560
561
- let plls = self . pll_setup ( pllsrcclk, sysclk_on_pll. then_some ( sysclk) ) ;
561
+ let plls = pll :: PllSetup :: from_cfgr ( & self , pllsrcclk, sysclk_on_pll. then_some ( sysclk) ) ;
562
562
let sysclk = if sysclk_on_pll {
563
563
plls. pllsysclk . unwrap ( )
564
564
} else {
@@ -586,7 +586,7 @@ impl CFGR {
586
586
587
587
let pclk1 = self
588
588
. pclk1
589
- . unwrap_or_else ( || core :: cmp :: min ( PCLK1_MAX , hclk) ) ;
589
+ . unwrap_or_else ( || crate :: min_u32 ( PCLK1_MAX , hclk) ) ;
590
590
let ( ppre1_bits, ppre1) = match ( hclk + pclk1 - 1 ) / pclk1 {
591
591
0 => unreachable ! ( ) ,
592
592
1 => ( 0b000 , 1u8 ) ,
@@ -603,7 +603,7 @@ impl CFGR {
603
603
604
604
let pclk2 = self
605
605
. pclk2
606
- . unwrap_or_else ( || core :: cmp :: min ( PCLK2_MAX , hclk) ) ;
606
+ . unwrap_or_else ( || crate :: min_u32 ( PCLK2_MAX , hclk) ) ;
607
607
let ( ppre2_bits, ppre2) = match ( hclk + pclk2 - 1 ) / pclk2 {
608
608
0 => unreachable ! ( ) ,
609
609
1 => ( 0b000 , 1u8 ) ,
You can’t perform that action at this time.
0 commit comments