aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Orona <[email protected]>2024-02-15 23:12:18 -0800
committerEli Orona <[email protected]>2024-02-15 23:12:18 -0800
commit56b345c722aa22e778eb8551c4d019441bf5520e (patch)
tree380634d1ffd4c20baf0b3a0550f0ac1fedeefe45
parent4408c169a5c3961f1a5163ce6c09762988c1a471 (diff)
Clean up register setting
-rw-r--r--embassy-stm32/src/rcc/f013.rs118
1 files changed, 23 insertions, 95 deletions
diff --git a/embassy-stm32/src/rcc/f013.rs b/embassy-stm32/src/rcc/f013.rs
index b5ec8585e..2352b057d 100644
--- a/embassy-stm32/src/rcc/f013.rs
+++ b/embassy-stm32/src/rcc/f013.rs
@@ -179,7 +179,7 @@ pub struct Config {
179 pub adc34: AdcClockSource, 179 pub adc34: AdcClockSource,
180 #[cfg(stm32f334)] 180 #[cfg(stm32f334)]
181 pub hrtim: HrtimClockSource, 181 pub hrtim: HrtimClockSource,
182 #[cfg(all(stm32f3, not(stm32f37)))] 182 #[cfg(all(stm32f3, not(rcc_f37)))]
183 pub tim: TimClockSources, 183 pub tim: TimClockSources,
184 184
185 pub ls: super::LsConfig, 185 pub ls: super::LsConfig,
@@ -449,62 +449,34 @@ pub(crate) unsafe fn init(config: Config) {
449 }; 449 };
450 450
451 #[cfg(all(stm32f3, not(rcc_f37)))] 451 #[cfg(all(stm32f3, not(rcc_f37)))]
452 let tim1 = match config.tim.tim1 { 452 match config.tim.tim1 {
453 TimClockSource::PClk2 => None, 453 TimClockSource::PClk2 => {},
454 TimClockSource::PllClk => { 454 TimClockSource::PllClk => {
455 use crate::pac::rcc::vals::Timsw; 455 RCC.cfgr3().modify(|w| w.set_tim1sw(crate::pac::rcc::vals::Timsw::PLL1_P));
456
457 let pll = unwrap!(pll);
458 assert!((pclk2 == pll) || (pclk2 * 2u32 == pll));
459
460 RCC.cfgr3().modify(|w| w.set_tim1sw(Timsw::PLL1_P));
461
462 Some(pll * 2u32)
463 } 456 }
464 }; 457 };
465 458
466 #[cfg(any(all(stm32f303, any(package_D, package_E)), all(stm32f302, any(package_D, package_E))))] 459 #[cfg(any(all(stm32f303, any(package_D, package_E)), all(stm32f302, any(package_D, package_E))))]
467 let tim2 = match config.tim.tim2 { 460 match config.tim.tim2 {
468 TimClockSource::PClk2 => None, 461 TimClockSource::PClk2 => {},
469 TimClockSource::PllClk => { 462 TimClockSource::PllClk => {
470 use crate::pac::rcc::vals::Timsw; 463 RCC.cfgr3().modify(|w| w.set_tim2sw(crate::pac::rcc::vals::Timsw::PLL1_P));
471
472 let pll = unwrap!(pll);
473 assert!((pclk2 == pll) || (pclk2 * 2u32 == pll));
474
475 RCC.cfgr3().modify(|w| w.set_tim2sw(Timsw::PLL1_P));
476
477 Some(pll * 2u32)
478 } 464 }
479 }; 465 };
480 466
481 #[cfg(any(all(stm32f303, any(package_D, package_E)), all(stm32f302, any(package_D, package_E))))] 467 #[cfg(any(all(stm32f303, any(package_D, package_E)), all(stm32f302, any(package_D, package_E))))]
482 let tim34 = match config.tim.tim34 { 468 match config.tim.tim34 {
483 TimClockSource::PClk2 => None, 469 TimClockSource::PClk2 => {},
484 TimClockSource::PllClk => { 470 TimClockSource::PllClk => {
485 use crate::pac::rcc::vals::Timsw; 471 RCC.cfgr3().modify(|w| w.set_tim34sw(crate::pac::rcc::vals::Timsw::PLL1_P));
486
487 let pll = unwrap!(pll);
488 assert!((pclk2 == pll) || (pclk2 * 2u32 == pll));
489
490 RCC.cfgr3().modify(|w| w.set_tim34sw(Timsw::PLL1_P));
491
492 Some(pll * 2u32)
493 } 472 }
494 }; 473 };
495 474
496 #[cfg(any(all(stm32f303, any(package_B, package_C, package_D, package_E)), stm32f358))] 475 #[cfg(any(all(stm32f303, any(package_B, package_C, package_D, package_E)), stm32f358))]
497 let tim8 = match config.tim.tim8 { 476 match config.tim.tim8 {
498 TimClockSource::PClk2 => None, 477 TimClockSource::PClk2 => {},
499 TimClockSource::PllClk => { 478 TimClockSource::PllClk => {
500 use crate::pac::rcc::vals::Timsw; 479 RCC.cfgr3().modify(|w| w.set_tim8sw(crate::pac::rcc::vals::Timsw::PLL1_P));
501
502 let pll = unwrap!(pll);
503 assert!((pclk2 == pll) || (pclk2 * 2u32 == pll));
504
505 RCC.cfgr3().modify(|w| w.set_tim8sw(Timsw::PLL1_P));
506
507 Some(pll * 2u32)
508 } 480 }
509 }; 481 };
510 482
@@ -514,17 +486,10 @@ pub(crate) unsafe fn init(config: Config) {
514 stm32f318, 486 stm32f318,
515 all(stm32f302, any(package_6, package_8)) 487 all(stm32f302, any(package_6, package_8))
516 ))] 488 ))]
517 let tim15 = match config.tim.tim15 { 489 match config.tim.tim15 {
518 TimClockSource::PClk2 => None, 490 TimClockSource::PClk2 => None,
519 TimClockSource::PllClk => { 491 TimClockSource::PllClk => {
520 use crate::pac::rcc::vals::Timsw; 492 RCC.cfgr3().modify(|w| w.set_tim15sw(crate::pac::rcc::vals::Timsw::PLL1_P));
521
522 let pll = unwrap!(pll);
523 assert!((pclk2 == pll) || (pclk2 * 2u32 == pll));
524
525 RCC.cfgr3().modify(|w| w.set_tim15sw(Timsw::PLL1_P));
526
527 Some(pll * 2u32)
528 } 493 }
529 }; 494 };
530 495
@@ -534,17 +499,10 @@ pub(crate) unsafe fn init(config: Config) {
534 stm32f318, 499 stm32f318,
535 all(stm32f302, any(package_6, package_8)) 500 all(stm32f302, any(package_6, package_8))
536 ))] 501 ))]
537 let tim16 = match config.tim.tim16 { 502 match config.tim.tim16 {
538 TimClockSource::PClk2 => None, 503 TimClockSource::PClk2 => None,
539 TimClockSource::PllClk => { 504 TimClockSource::PllClk => {
540 use crate::pac::rcc::vals::Timsw; 505 RCC.cfgr3().modify(|w| w.set_tim16sw(crate::pac::rcc::vals::Timsw::PLL1_P));
541
542 let pll = unwrap!(pll);
543 assert!((pclk2 == pll) || (pclk2 * 2u32 == pll));
544
545 RCC.cfgr3().modify(|w| w.set_tim16sw(Timsw::PLL1_P));
546
547 Some(pll * 2u32)
548 } 506 }
549 }; 507 };
550 508
@@ -554,34 +512,20 @@ pub(crate) unsafe fn init(config: Config) {
554 stm32f318, 512 stm32f318,
555 all(stm32f302, any(package_6, package_8)) 513 all(stm32f302, any(package_6, package_8))
556 ))] 514 ))]
557 let tim17 = match config.tim.tim17 { 515 match config.tim.tim17 {
558 TimClockSource::PClk2 => None, 516 TimClockSource::PClk2 => None,
559 TimClockSource::PllClk => { 517 TimClockSource::PllClk => {
560 use crate::pac::rcc::vals::Timsw; 518 RCC.cfgr3().modify(|w| w.set_tim17sw(crate::pac::rcc::vals::Timsw::PLL1_P));
561
562 let pll = unwrap!(pll);
563 assert!((pclk2 == pll) || (pclk2 * 2u32 == pll));
564
565 RCC.cfgr3().modify(|w| w.set_tim17sw(Timsw::PLL1_P));
566
567 Some(pll * 2u32)
568 } 519 }
569 }; 520 }
570 521
571 #[cfg(any(all(stm32f303, any(package_D, package_E))))] 522 #[cfg(any(all(stm32f303, any(package_D, package_E))))]
572 let tim20 = match config.tim.tim20 { 523 match config.tim.tim20 {
573 TimClockSource::PClk2 => None, 524 TimClockSource::PClk2 => None,
574 TimClockSource::PllClk => { 525 TimClockSource::PllClk => {
575 use crate::pac::rcc::vals::Timsw; 526 RCC.cfgr3().modify(|w| w.set_tim20sw(crate::pac::rcc::vals::Timsw::PLL1_P));
576
577 let pll = unwrap!(pll);
578 assert!((pclk2 == pll) || (pclk2 * 2u32 == pll));
579
580 RCC.cfgr3().modify(|w| w.set_tim20sw(Timsw::PLL1_P));
581
582 Some(pll * 2u32)
583 } 527 }
584 }; 528 }
585 529
586 set_clocks!( 530 set_clocks!(
587 hsi: hsi, 531 hsi: hsi,
@@ -599,22 +543,6 @@ pub(crate) unsafe fn init(config: Config) {
599 adc34: Some(adc34), 543 adc34: Some(adc34),
600 #[cfg(stm32f334)] 544 #[cfg(stm32f334)]
601 hrtim: hrtim, 545 hrtim: hrtim,
602 #[cfg(all(stm32f3, not(rcc_f37)))]
603 tim1: tim1,
604 #[cfg(any(all(stm32f303, any(package_D, package_E)), all(stm32f302, any(package_D, package_E))))]
605 tim2: tim2,
606 #[cfg(any(all(stm32f303, any(package_D, package_E)), all(stm32f302, any(package_D, package_E))))]
607 tim34: tim34,
608 #[cfg(any(all(stm32f303, any(package_B, package_C, package_D, package_E)), stm32f358))]
609 tim8: tim8,
610 #[cfg(any(all(stm32f303, any(package_D, package_E)), stm32f301, stm32f318, all(stm32f302, any(package_6, package_8))))]
611 tim15: tim15,
612 #[cfg(any(all(stm32f303, any(package_D, package_E)), stm32f301, stm32f318, all(stm32f302, any(package_6, package_8))))]
613 tim16: tim16,
614 #[cfg(any(all(stm32f303, any(package_D, package_E)), stm32f301, stm32f318, all(stm32f302, any(package_6, package_8))))]
615 tim17: tim17,
616 #[cfg(any(all(stm32f303, any(package_D, package_E))))]
617 tim20: tim20,
618 rtc: rtc, 546 rtc: rtc,
619 hsi48: hsi48, 547 hsi48: hsi48,
620 #[cfg(any(rcc_f1, rcc_f1cl, stm32f3))] 548 #[cfg(any(rcc_f1, rcc_f1cl, stm32f3))]