@@ -235,14 +235,17 @@ macro_rules! pll_divider_setup {
235235 } }
236236 } ;
237237}
238-
238+ fn foo ( rcc : RCC ) {
239+ //rcc.pll1cfgr().modify(|_, w| w.divm1());
240+ //rcc.pll1cfgr().modify(|_, w| w.pll1m());
241+ }
239242macro_rules! pll_setup {
240- ( $pllX : ident , $odd_allowed: expr) => {
243+ ( $X : literal , $odd_allowed: expr) => {
241244 paste:: item! {
242245 /// PLL Setup
243246 /// Returns (Option(pllX_p_ck), Option(pllX_q_ck), Option(pllX_r_ck))
244247
245- pub ( super ) fn [ < $pllX _setup >] (
248+ pub ( super ) fn [ < pll $X _setup >] (
246249 & self ,
247250 rcc: & RCC ,
248251 pll: & PllConfig ,
@@ -256,20 +259,20 @@ macro_rules! pll_setup {
256259 return ( None , None , None ) ;
257260 }
258261
259- let pll_setup = vco_setup!( pllsrc, pll, rcc, $pllX , $odd_allowed) ;
262+ let pll_setup = vco_setup!( pllsrc, pll, rcc, [ <pll $X> ] , $odd_allowed) ;
260263
261264 // Feedback divider. Integer only
262265 let pll_x_n = pll_setup. vco_out_target / pll_setup. ref_ck;
263266
264267 // Write dividers
265- rcc. [ < $pllX cfgr >] ( ) . modify( |_, w| unsafe {
266- w. [ < $pllX m >] ( )
268+ rcc. [ < pll $X cfgr >] ( ) . modify( |_, w| unsafe {
269+ w. [ < divm $X >] ( )
267270 . bits( pll_setup. pll_m as u8 ) } ) ; // ref prescaler
268271
269272 // unsafe as not all values are permitted: see RM0492
270273 assert!( pll_x_n >= PLL_N_MIN ) ;
271274 assert!( pll_x_n <= PLL_N_MAX ) ;
272- rcc. [ <$pllX divr>] ( ) . modify( |_, w| unsafe { w. [ <$pllX n>] ( ) . bits( ( pll_x_n - 1 ) as u16 ) } ) ;
275+ rcc. [ <pll $X divr>] ( ) . modify( |_, w| unsafe { w. [ < pll $X n>] ( ) . bits( ( pll_x_n - 1 ) as u16 ) } ) ;
273276
274277 let pll_x = pll_setup. pll_p. as_ref( ) . or( pll_setup. pll_q. as_ref( ) . or( pll_setup. pll_r. as_ref( ) ) ) . unwrap( ) ;
275278
@@ -279,10 +282,10 @@ macro_rules! pll_setup {
279282 // Calculate FRACN
280283 let pll_x_fracn = calc_fracn( pll_setup. ref_ck as f32 , pll_x_n as f32 , pll_x. div as f32 , pll_x. ck as f32 ) ;
281284 //RCC_PLL1FRACR
282- rcc. [ <$pllX fracr>] ( ) . modify( |_, w| w. [ <$pllX fracn>] ( ) . set( pll_x_fracn) ) ;
285+ rcc. [ <pll $X fracr>] ( ) . modify( |_, w| w. [ <pll $X fracn>] ( ) . set( pll_x_fracn) ) ;
283286 // Latch FRACN by resetting and setting it
284- rcc. [ <$pllX cfgr>] ( ) . modify( |_, w| w. [ < $pllX fracen>] ( ) . reset( ) ) ;
285- rcc. [ <$pllX cfgr>] ( ) . modify( |_, w| w. [ < $pllX fracen>] ( ) . set_( ) ) ;
287+ rcc. [ <pll $X cfgr>] ( ) . modify( |_, w| w. [ < pll $X fracen>] ( ) . reset( ) ) ;
288+ rcc. [ <pll $X cfgr>] ( ) . modify( |_, w| w. [ < pll $X fracen>] ( ) . set_( ) ) ;
286289
287290 calc_vco_ck( pll_setup. ref_ck, pll_x_n, pll_x_fracn)
288291 } ,
@@ -292,7 +295,7 @@ macro_rules! pll_setup {
292295 } ,
293296 } ;
294297
295- pll_divider_setup! { ( $pllX , rcc, pll, vco_ck) ,
298+ pll_divider_setup! { ( [ <pll $X> ] , rcc, pll, vco_ck) ,
296299 p: & pll_setup. pll_p,
297300 q: & pll_setup. pll_q,
298301 r: & pll_setup. pll_r }
@@ -326,8 +329,8 @@ fn calc_vco_ck(ref_ck: u32, pll_n: u32, pll_fracn: u16) -> u32 {
326329}
327330
328331impl Rcc {
329- pll_setup ! { pll1 , false }
330- pll_setup ! { pll2 , true }
332+ pll_setup ! { 1 , false }
333+ pll_setup ! { 2 , true }
331334}
332335
333336#[ cfg( test) ]
0 commit comments