diff options
| author | Eli Orona <[email protected]> | 2024-02-15 23:12:18 -0800 |
|---|---|---|
| committer | Eli Orona <[email protected]> | 2024-02-15 23:12:18 -0800 |
| commit | 56b345c722aa22e778eb8551c4d019441bf5520e (patch) | |
| tree | 380634d1ffd4c20baf0b3a0550f0ac1fedeefe45 | |
| parent | 4408c169a5c3961f1a5163ce6c09762988c1a471 (diff) | |
Clean up register setting
| -rw-r--r-- | embassy-stm32/src/rcc/f013.rs | 118 |
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))] |
