diff options
| author | Dario Nieuwenhuis <[email protected]> | 2023-11-13 01:08:27 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-11-13 01:08:27 +0000 |
| commit | ac7134ed0d304282d2b10b1efff316426757fdab (patch) | |
| tree | 69cd68e35968cf0a5da5000308e338bdbad3724a /examples | |
| parent | f00e97a5f14b25d261eafba7cbc63b035c938996 (diff) | |
| parent | ace52210802a18a551f506bc3ad163703e3f9efa (diff) | |
Merge pull request #2178 from embassy-rs/rcc-no-spaghetti
stm32/rcc: unify f2 into f4/f7.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/stm32f2/src/bin/pll.rs | 55 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/eth.rs | 2 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/sdmmc.rs | 4 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usb_ethernet.rs | 4 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usb_raw.rs | 4 | ||||
| -rw-r--r-- | examples/stm32f4/src/bin/usb_serial.rs | 4 | ||||
| -rw-r--r-- | examples/stm32f7/src/bin/eth.rs | 2 | ||||
| -rw-r--r-- | examples/stm32f7/src/bin/sdmmc.rs | 4 | ||||
| -rw-r--r-- | examples/stm32f7/src/bin/usb_serial.rs | 4 |
9 files changed, 43 insertions, 40 deletions
diff --git a/examples/stm32f2/src/bin/pll.rs b/examples/stm32f2/src/bin/pll.rs index feec90016..aae7637dc 100644 --- a/examples/stm32f2/src/bin/pll.rs +++ b/examples/stm32f2/src/bin/pll.rs | |||
| @@ -6,9 +6,6 @@ use core::convert::TryFrom; | |||
| 6 | 6 | ||
| 7 | use defmt::*; | 7 | use defmt::*; |
| 8 | use embassy_executor::Spawner; | 8 | use embassy_executor::Spawner; |
| 9 | use embassy_stm32::rcc::{ | ||
| 10 | APBPrescaler, ClockSrc, HSEConfig, HSESrc, Pll, PllMul, PllPDiv, PllPreDiv, PllQDiv, PllSource, | ||
| 11 | }; | ||
| 12 | use embassy_stm32::time::Hertz; | 9 | use embassy_stm32::time::Hertz; |
| 13 | use embassy_stm32::Config; | 10 | use embassy_stm32::Config; |
| 14 | use embassy_time::Timer; | 11 | use embassy_time::Timer; |
| @@ -19,29 +16,35 @@ async fn main(_spawner: Spawner) { | |||
| 19 | // Example config for maximum performance on a NUCLEO-F207ZG board | 16 | // Example config for maximum performance on a NUCLEO-F207ZG board |
| 20 | 17 | ||
| 21 | let mut config = Config::default(); | 18 | let mut config = Config::default(); |
| 22 | // By default, HSE on the board comes from a 8 MHz clock signal (not a crystal) | 19 | |
| 23 | config.rcc.hse = Some(HSEConfig { | 20 | { |
| 24 | frequency: Hertz(8_000_000), | 21 | use embassy_stm32::rcc::*; |
| 25 | source: HSESrc::Bypass, | 22 | |
| 26 | }); | 23 | // By default, HSE on the board comes from a 8 MHz clock signal (not a crystal) |
| 27 | // PLL uses HSE as the clock source | 24 | config.rcc.hse = Some(Hse { |
| 28 | config.rcc.pll_mux = PllSource::HSE; | 25 | freq: Hertz(8_000_000), |
| 29 | config.rcc.pll = Pll { | 26 | mode: HseMode::Bypass, |
| 30 | // 8 MHz clock source / 8 = 1 MHz PLL input | 27 | }); |
| 31 | pre_div: unwrap!(PllPreDiv::try_from(8)), | 28 | // PLL uses HSE as the clock source |
| 32 | // 1 MHz PLL input * 240 = 240 MHz PLL VCO | 29 | config.rcc.pll_src = PllSource::HSE; |
| 33 | mul: unwrap!(PllMul::try_from(240)), | 30 | config.rcc.pll = Some(Pll { |
| 34 | // 240 MHz PLL VCO / 2 = 120 MHz main PLL output | 31 | // 8 MHz clock source / 8 = 1 MHz PLL input |
| 35 | divp: PllPDiv::DIV2, | 32 | prediv: unwrap!(PllPreDiv::try_from(8)), |
| 36 | // 240 MHz PLL VCO / 5 = 48 MHz PLL48 output | 33 | // 1 MHz PLL input * 240 = 240 MHz PLL VCO |
| 37 | divq: PllQDiv::DIV5, | 34 | mul: unwrap!(PllMul::try_from(240)), |
| 38 | }; | 35 | // 240 MHz PLL VCO / 2 = 120 MHz main PLL output |
| 39 | // System clock comes from PLL (= the 120 MHz main PLL output) | 36 | divp: Some(PllPDiv::DIV2), |
| 40 | config.rcc.mux = ClockSrc::PLL; | 37 | // 240 MHz PLL VCO / 5 = 48 MHz PLL48 output |
| 41 | // 120 MHz / 4 = 30 MHz APB1 frequency | 38 | divq: Some(PllQDiv::DIV5), |
| 42 | config.rcc.apb1_pre = APBPrescaler::DIV4; | 39 | divr: None, |
| 43 | // 120 MHz / 2 = 60 MHz APB2 frequency | 40 | }); |
| 44 | config.rcc.apb2_pre = APBPrescaler::DIV2; | 41 | // System clock comes from PLL (= the 120 MHz main PLL output) |
| 42 | config.rcc.sys = Sysclk::PLL1_P; | ||
| 43 | // 120 MHz / 4 = 30 MHz APB1 frequency | ||
| 44 | config.rcc.apb1_pre = APBPrescaler::DIV4; | ||
| 45 | // 120 MHz / 2 = 60 MHz APB2 frequency | ||
| 46 | config.rcc.apb2_pre = APBPrescaler::DIV2; | ||
| 47 | } | ||
| 45 | 48 | ||
| 46 | let _p = embassy_stm32::init(config); | 49 | let _p = embassy_stm32::init(config); |
| 47 | 50 | ||
diff --git a/examples/stm32f4/src/bin/eth.rs b/examples/stm32f4/src/bin/eth.rs index 1747bbf4b..088d83c06 100644 --- a/examples/stm32f4/src/bin/eth.rs +++ b/examples/stm32f4/src/bin/eth.rs | |||
| @@ -42,7 +42,7 @@ async fn main(spawner: Spawner) -> ! { | |||
| 42 | config.rcc.pll = Some(Pll { | 42 | config.rcc.pll = Some(Pll { |
| 43 | prediv: PllPreDiv::DIV4, | 43 | prediv: PllPreDiv::DIV4, |
| 44 | mul: PllMul::MUL180, | 44 | mul: PllMul::MUL180, |
| 45 | divp: Some(Pllp::DIV2), // 8mhz / 4 * 180 / 2 = 180Mhz. | 45 | divp: Some(PllPDiv::DIV2), // 8mhz / 4 * 180 / 2 = 180Mhz. |
| 46 | divq: None, | 46 | divq: None, |
| 47 | divr: None, | 47 | divr: None, |
| 48 | }); | 48 | }); |
diff --git a/examples/stm32f4/src/bin/sdmmc.rs b/examples/stm32f4/src/bin/sdmmc.rs index 37e42384b..91747b2d5 100644 --- a/examples/stm32f4/src/bin/sdmmc.rs +++ b/examples/stm32f4/src/bin/sdmmc.rs | |||
| @@ -30,8 +30,8 @@ async fn main(_spawner: Spawner) { | |||
| 30 | config.rcc.pll = Some(Pll { | 30 | config.rcc.pll = Some(Pll { |
| 31 | prediv: PllPreDiv::DIV4, | 31 | prediv: PllPreDiv::DIV4, |
| 32 | mul: PllMul::MUL168, | 32 | mul: PllMul::MUL168, |
| 33 | divp: Some(Pllp::DIV2), // 8mhz / 4 * 168 / 2 = 168Mhz. | 33 | divp: Some(PllPDiv::DIV2), // 8mhz / 4 * 168 / 2 = 168Mhz. |
| 34 | divq: Some(Pllq::DIV7), // 8mhz / 4 * 168 / 7 = 48Mhz. | 34 | divq: Some(PllQDiv::DIV7), // 8mhz / 4 * 168 / 7 = 48Mhz. |
| 35 | divr: None, | 35 | divr: None, |
| 36 | }); | 36 | }); |
| 37 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | 37 | config.rcc.ahb_pre = AHBPrescaler::DIV1; |
diff --git a/examples/stm32f4/src/bin/usb_ethernet.rs b/examples/stm32f4/src/bin/usb_ethernet.rs index 34407b95a..6bf5b1cba 100644 --- a/examples/stm32f4/src/bin/usb_ethernet.rs +++ b/examples/stm32f4/src/bin/usb_ethernet.rs | |||
| @@ -56,8 +56,8 @@ async fn main(spawner: Spawner) { | |||
| 56 | config.rcc.pll = Some(Pll { | 56 | config.rcc.pll = Some(Pll { |
| 57 | prediv: PllPreDiv::DIV4, | 57 | prediv: PllPreDiv::DIV4, |
| 58 | mul: PllMul::MUL168, | 58 | mul: PllMul::MUL168, |
| 59 | divp: Some(Pllp::DIV2), // 8mhz / 4 * 168 / 2 = 168Mhz. | 59 | divp: Some(PllPDiv::DIV2), // 8mhz / 4 * 168 / 2 = 168Mhz. |
| 60 | divq: Some(Pllq::DIV7), // 8mhz / 4 * 168 / 7 = 48Mhz. | 60 | divq: Some(PllQDiv::DIV7), // 8mhz / 4 * 168 / 7 = 48Mhz. |
| 61 | divr: None, | 61 | divr: None, |
| 62 | }); | 62 | }); |
| 63 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | 63 | config.rcc.ahb_pre = AHBPrescaler::DIV1; |
diff --git a/examples/stm32f4/src/bin/usb_raw.rs b/examples/stm32f4/src/bin/usb_raw.rs index 689aea4fc..719b22bb9 100644 --- a/examples/stm32f4/src/bin/usb_raw.rs +++ b/examples/stm32f4/src/bin/usb_raw.rs | |||
| @@ -85,8 +85,8 @@ async fn main(_spawner: Spawner) { | |||
| 85 | config.rcc.pll = Some(Pll { | 85 | config.rcc.pll = Some(Pll { |
| 86 | prediv: PllPreDiv::DIV4, | 86 | prediv: PllPreDiv::DIV4, |
| 87 | mul: PllMul::MUL168, | 87 | mul: PllMul::MUL168, |
| 88 | divp: Some(Pllp::DIV2), // 8mhz / 4 * 168 / 2 = 168Mhz. | 88 | divp: Some(PllPDiv::DIV2), // 8mhz / 4 * 168 / 2 = 168Mhz. |
| 89 | divq: Some(Pllq::DIV7), // 8mhz / 4 * 168 / 7 = 48Mhz. | 89 | divq: Some(PllQDiv::DIV7), // 8mhz / 4 * 168 / 7 = 48Mhz. |
| 90 | divr: None, | 90 | divr: None, |
| 91 | }); | 91 | }); |
| 92 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | 92 | config.rcc.ahb_pre = AHBPrescaler::DIV1; |
diff --git a/examples/stm32f4/src/bin/usb_serial.rs b/examples/stm32f4/src/bin/usb_serial.rs index 3e05b0ef2..e2ccc9142 100644 --- a/examples/stm32f4/src/bin/usb_serial.rs +++ b/examples/stm32f4/src/bin/usb_serial.rs | |||
| @@ -32,8 +32,8 @@ async fn main(_spawner: Spawner) { | |||
| 32 | config.rcc.pll = Some(Pll { | 32 | config.rcc.pll = Some(Pll { |
| 33 | prediv: PllPreDiv::DIV4, | 33 | prediv: PllPreDiv::DIV4, |
| 34 | mul: PllMul::MUL168, | 34 | mul: PllMul::MUL168, |
| 35 | divp: Some(Pllp::DIV2), // 8mhz / 4 * 168 / 2 = 168Mhz. | 35 | divp: Some(PllPDiv::DIV2), // 8mhz / 4 * 168 / 2 = 168Mhz. |
| 36 | divq: Some(Pllq::DIV7), // 8mhz / 4 * 168 / 7 = 48Mhz. | 36 | divq: Some(PllQDiv::DIV7), // 8mhz / 4 * 168 / 7 = 48Mhz. |
| 37 | divr: None, | 37 | divr: None, |
| 38 | }); | 38 | }); |
| 39 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | 39 | config.rcc.ahb_pre = AHBPrescaler::DIV1; |
diff --git a/examples/stm32f7/src/bin/eth.rs b/examples/stm32f7/src/bin/eth.rs index 7c6c419a6..dd0069447 100644 --- a/examples/stm32f7/src/bin/eth.rs +++ b/examples/stm32f7/src/bin/eth.rs | |||
| @@ -43,7 +43,7 @@ async fn main(spawner: Spawner) -> ! { | |||
| 43 | config.rcc.pll = Some(Pll { | 43 | config.rcc.pll = Some(Pll { |
| 44 | prediv: PllPreDiv::DIV4, | 44 | prediv: PllPreDiv::DIV4, |
| 45 | mul: PllMul::MUL216, | 45 | mul: PllMul::MUL216, |
| 46 | divp: Some(Pllp::DIV2), // 8mhz / 4 * 216 / 2 = 216Mhz | 46 | divp: Some(PllPDiv::DIV2), // 8mhz / 4 * 216 / 2 = 216Mhz |
| 47 | divq: None, | 47 | divq: None, |
| 48 | divr: None, | 48 | divr: None, |
| 49 | }); | 49 | }); |
diff --git a/examples/stm32f7/src/bin/sdmmc.rs b/examples/stm32f7/src/bin/sdmmc.rs index 430aa781f..990de0ab1 100644 --- a/examples/stm32f7/src/bin/sdmmc.rs +++ b/examples/stm32f7/src/bin/sdmmc.rs | |||
| @@ -26,8 +26,8 @@ async fn main(_spawner: Spawner) { | |||
| 26 | config.rcc.pll = Some(Pll { | 26 | config.rcc.pll = Some(Pll { |
| 27 | prediv: PllPreDiv::DIV4, | 27 | prediv: PllPreDiv::DIV4, |
| 28 | mul: PllMul::MUL216, | 28 | mul: PllMul::MUL216, |
| 29 | divp: Some(Pllp::DIV2), // 8mhz / 4 * 216 / 2 = 216Mhz | 29 | divp: Some(PllPDiv::DIV2), // 8mhz / 4 * 216 / 2 = 216Mhz |
| 30 | divq: Some(Pllq::DIV9), // 8mhz / 4 * 216 / 9 = 48Mhz | 30 | divq: Some(PllQDiv::DIV9), // 8mhz / 4 * 216 / 9 = 48Mhz |
| 31 | divr: None, | 31 | divr: None, |
| 32 | }); | 32 | }); |
| 33 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | 33 | config.rcc.ahb_pre = AHBPrescaler::DIV1; |
diff --git a/examples/stm32f7/src/bin/usb_serial.rs b/examples/stm32f7/src/bin/usb_serial.rs index 6aca732b4..4991edbf0 100644 --- a/examples/stm32f7/src/bin/usb_serial.rs +++ b/examples/stm32f7/src/bin/usb_serial.rs | |||
| @@ -32,8 +32,8 @@ async fn main(_spawner: Spawner) { | |||
| 32 | config.rcc.pll = Some(Pll { | 32 | config.rcc.pll = Some(Pll { |
| 33 | prediv: PllPreDiv::DIV4, | 33 | prediv: PllPreDiv::DIV4, |
| 34 | mul: PllMul::MUL216, | 34 | mul: PllMul::MUL216, |
| 35 | divp: Some(Pllp::DIV2), // 8mhz / 4 * 216 / 2 = 216Mhz | 35 | divp: Some(PllPDiv::DIV2), // 8mhz / 4 * 216 / 2 = 216Mhz |
| 36 | divq: Some(Pllq::DIV9), // 8mhz / 4 * 216 / 9 = 48Mhz | 36 | divq: Some(PllQDiv::DIV9), // 8mhz / 4 * 216 / 9 = 48Mhz |
| 37 | divr: None, | 37 | divr: None, |
| 38 | }); | 38 | }); |
| 39 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | 39 | config.rcc.ahb_pre = AHBPrescaler::DIV1; |
