@@ -19,9 +19,6 @@ impl RccExt for RCC {
1919 pclk2 : None ,
2020 sysclk : None ,
2121 pll48clk : false ,
22- pclk1_overclock : false ,
23- pclk2_overclock : false ,
24- sysclk_overclock : false ,
2522 } ,
2623 }
2724 }
@@ -127,9 +124,6 @@ pub struct CFGR {
127124 pclk2 : Option < u32 > ,
128125 sysclk : Option < u32 > ,
129126 pll48clk : bool ,
130- pclk1_overclock : bool ,
131- pclk2_overclock : bool ,
132- sysclk_overclock : bool ,
133127}
134128
135129impl CFGR {
@@ -180,21 +174,6 @@ impl CFGR {
180174 self
181175 }
182176
183- pub unsafe fn pclk1_allow_overclock ( mut self ) -> Self {
184- self . pclk1_overclock = true ;
185- self
186- }
187-
188- pub unsafe fn pclk2_allow_overclock ( mut self ) -> Self {
189- self . pclk2_overclock = true ;
190- self
191- }
192-
193- pub unsafe fn sysclk_allow_overclock ( mut self ) -> Self {
194- self . sysclk_overclock = true ;
195- self
196- }
197-
198177 #[ inline( always) ]
199178 fn pll_setup ( & self ) -> ( bool , bool , u32 , Option < Hertz > ) {
200179 let pllsrcclk = self . hse . unwrap_or ( HSI ) ;
@@ -306,14 +285,24 @@ impl CFGR {
306285 }
307286 }
308287
288+ /// Initialises the hardware according to CFGR state returning a Clocks instance.
289+ /// Panics if overclocking is attempted.
309290 pub fn freeze ( self ) -> Clocks {
291+ self . freeze_internal ( false )
292+ }
293+
294+ /// Initialises the hardware according to CFGR state returning a Clocks instance.
295+ /// Allows overclocking.
296+ pub unsafe fn freeze_unchecked ( self ) -> Clocks {
297+ self . freeze_internal ( true )
298+ }
299+
300+ pub fn freeze_internal ( self , unchecked : bool ) -> Clocks {
310301 let rcc = unsafe { & * RCC :: ptr ( ) } ;
311302
312303 let ( use_pll, sysclk_on_pll, sysclk, pll48clk) = self . pll_setup ( ) ;
313304
314- assert ! (
315- self . sysclk_overclock || !sysclk_on_pll || sysclk <= SYSCLK_MAX && sysclk >= SYSCLK_MIN
316- ) ;
305+ assert ! ( unchecked || !sysclk_on_pll || sysclk <= SYSCLK_MAX && sysclk >= SYSCLK_MIN ) ;
317306
318307 let hclk = self . hclk . unwrap_or ( sysclk) ;
319308 let ( hpre_bits, hpre_div) = match ( sysclk + hclk - 1 ) / hclk {
@@ -347,7 +336,7 @@ impl CFGR {
347336 // Calculate real APB1 clock
348337 let pclk1 = hclk / u32:: from ( ppre1) ;
349338
350- assert ! ( self . pclk1_overclock || pclk1 <= PCLK1_MAX ) ;
339+ assert ! ( unchecked || pclk1 <= PCLK1_MAX ) ;
351340
352341 let pclk2 = self
353342 . pclk2
@@ -364,7 +353,7 @@ impl CFGR {
364353 // Calculate real APB2 clock
365354 let pclk2 = hclk / u32:: from ( ppre2) ;
366355
367- assert ! ( self . pclk2_overclock || pclk2 <= PCLK2_MAX ) ;
356+ assert ! ( unchecked || pclk2 <= PCLK2_MAX ) ;
368357
369358 Self :: flash_setup ( sysclk) ;
370359
0 commit comments