@@ -413,7 +413,7 @@ macro_rules! ppre_calculate {
413413 . unwrap_or( $hclk) ;
414414
415415 // Calculate suitable divider
416- let ( $bits, $ppre) = match ( $hclk + $pclk - 1 ) / $pclk
416+ let ( $bits, $ppre) = match $hclk. div_ceil ( $pclk)
417417 {
418418 0 => unreachable!( ) ,
419419 1 => ( PPRE :: Div1 , 1 as u8 ) ,
@@ -617,19 +617,18 @@ impl Rcc {
617617 let rcc_hclk = self . config . rcc_hclk . unwrap_or ( sys_ck. raw ( ) ) ;
618618
619619 // Estimate divisor
620- let ( hpre_bits, hpre_div) =
621- match ( sys_ck. raw ( ) + rcc_hclk - 1 ) / rcc_hclk {
622- 0 => unreachable ! ( ) ,
623- 1 => ( HPRE :: Div1 , 1 ) ,
624- 2 => ( HPRE :: Div2 , 2 ) ,
625- 3 ..=5 => ( HPRE :: Div4 , 4 ) ,
626- 6 ..=11 => ( HPRE :: Div8 , 8 ) ,
627- 12 ..=39 => ( HPRE :: Div16 , 16 ) ,
628- 40 ..=95 => ( HPRE :: Div64 , 64 ) ,
629- 96 ..=191 => ( HPRE :: Div128 , 128 ) ,
630- 192 ..=383 => ( HPRE :: Div256 , 256 ) ,
631- _ => ( HPRE :: Div512 , 512 ) ,
632- } ;
620+ let ( hpre_bits, hpre_div) = match sys_ck. raw ( ) . div_ceil ( rcc_hclk) {
621+ 0 => unreachable ! ( ) ,
622+ 1 => ( HPRE :: Div1 , 1 ) ,
623+ 2 => ( HPRE :: Div2 , 2 ) ,
624+ 3 ..=5 => ( HPRE :: Div4 , 4 ) ,
625+ 6 ..=11 => ( HPRE :: Div8 , 8 ) ,
626+ 12 ..=39 => ( HPRE :: Div16 , 16 ) ,
627+ 40 ..=95 => ( HPRE :: Div64 , 64 ) ,
628+ 96 ..=191 => ( HPRE :: Div128 , 128 ) ,
629+ 192 ..=383 => ( HPRE :: Div256 , 256 ) ,
630+ _ => ( HPRE :: Div512 , 512 ) ,
631+ } ;
633632
634633 // Calculate real AHB clock
635634 let rcc_hclk = sys_ck. raw ( ) / hpre_div;
0 commit comments