diff options
| author | Dario Nieuwenhuis <[email protected]> | 2024-02-16 23:38:49 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-02-16 23:38:49 +0000 |
| commit | 9352621058bb4e96b8897ec431cc939838729442 (patch) | |
| tree | ff6cbdc1f12e1cb2ab69c9b423a090038778e874 /examples | |
| parent | e9907de39d640fee02df9eac1fbd7efa33e63da2 (diff) | |
| parent | 6d7458dac7e768425342910e04a75c85e667cb82 (diff) | |
Merge pull request #2579 from barnabywalters/g4rcc
[embassy-stm32]: stm32g4 RCC refactor
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/stm32g4/src/bin/adc.rs | 16 | ||||
| -rw-r--r-- | examples/stm32g4/src/bin/pll.rs | 16 | ||||
| -rw-r--r-- | examples/stm32g4/src/bin/usb_serial.rs | 31 |
3 files changed, 36 insertions, 27 deletions
diff --git a/examples/stm32g4/src/bin/adc.rs b/examples/stm32g4/src/bin/adc.rs index 35324d931..99e3ef63b 100644 --- a/examples/stm32g4/src/bin/adc.rs +++ b/examples/stm32g4/src/bin/adc.rs | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | use defmt::*; | 4 | use defmt::*; |
| 5 | use embassy_executor::Spawner; | 5 | use embassy_executor::Spawner; |
| 6 | use embassy_stm32::adc::{Adc, SampleTime}; | 6 | use embassy_stm32::adc::{Adc, SampleTime}; |
| 7 | use embassy_stm32::rcc::{AdcClockSource, ClockSrc, Pll, PllM, PllN, PllR, PllSource}; | 7 | use embassy_stm32::rcc::{AdcClockSource, Pll, PllMul, PllPreDiv, PllRDiv, Pllsrc, Sysclk}; |
| 8 | use embassy_stm32::Config; | 8 | use embassy_stm32::Config; |
| 9 | use embassy_time::{Delay, Timer}; | 9 | use embassy_time::{Delay, Timer}; |
| 10 | use {defmt_rtt as _, panic_probe as _}; | 10 | use {defmt_rtt as _, panic_probe as _}; |
| @@ -14,17 +14,17 @@ async fn main(_spawner: Spawner) { | |||
| 14 | let mut config = Config::default(); | 14 | let mut config = Config::default(); |
| 15 | 15 | ||
| 16 | config.rcc.pll = Some(Pll { | 16 | config.rcc.pll = Some(Pll { |
| 17 | source: PllSource::HSI, | 17 | source: Pllsrc::HSI, |
| 18 | prediv_m: PllM::DIV4, | 18 | prediv: PllPreDiv::DIV4, |
| 19 | mul_n: PllN::MUL85, | 19 | mul: PllMul::MUL85, |
| 20 | div_p: None, | 20 | divp: None, |
| 21 | div_q: None, | 21 | divq: None, |
| 22 | // Main system clock at 170 MHz | 22 | // Main system clock at 170 MHz |
| 23 | div_r: Some(PllR::DIV2), | 23 | divr: Some(PllRDiv::DIV2), |
| 24 | }); | 24 | }); |
| 25 | 25 | ||
| 26 | config.rcc.adc12_clock_source = AdcClockSource::SYS; | 26 | config.rcc.adc12_clock_source = AdcClockSource::SYS; |
| 27 | config.rcc.mux = ClockSrc::PLL; | 27 | config.rcc.sys = Sysclk::PLL1_R; |
| 28 | 28 | ||
| 29 | let mut p = embassy_stm32::init(config); | 29 | let mut p = embassy_stm32::init(config); |
| 30 | info!("Hello World!"); | 30 | info!("Hello World!"); |
diff --git a/examples/stm32g4/src/bin/pll.rs b/examples/stm32g4/src/bin/pll.rs index 46ebe0b0d..5274de79d 100644 --- a/examples/stm32g4/src/bin/pll.rs +++ b/examples/stm32g4/src/bin/pll.rs | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | use defmt::*; | 4 | use defmt::*; |
| 5 | use embassy_executor::Spawner; | 5 | use embassy_executor::Spawner; |
| 6 | use embassy_stm32::rcc::{ClockSrc, Pll, PllM, PllN, PllR, PllSource}; | 6 | use embassy_stm32::rcc::{Pll, PllMul, PllPreDiv, PllRDiv, Pllsrc, Sysclk}; |
| 7 | use embassy_stm32::Config; | 7 | use embassy_stm32::Config; |
| 8 | use embassy_time::Timer; | 8 | use embassy_time::Timer; |
| 9 | use {defmt_rtt as _, panic_probe as _}; | 9 | use {defmt_rtt as _, panic_probe as _}; |
| @@ -13,16 +13,16 @@ async fn main(_spawner: Spawner) { | |||
| 13 | let mut config = Config::default(); | 13 | let mut config = Config::default(); |
| 14 | 14 | ||
| 15 | config.rcc.pll = Some(Pll { | 15 | config.rcc.pll = Some(Pll { |
| 16 | source: PllSource::HSI, | 16 | source: Pllsrc::HSI, |
| 17 | prediv_m: PllM::DIV4, | 17 | prediv: PllPreDiv::DIV4, |
| 18 | mul_n: PllN::MUL85, | 18 | mul: PllMul::MUL85, |
| 19 | div_p: None, | 19 | divp: None, |
| 20 | div_q: None, | 20 | divq: None, |
| 21 | // Main system clock at 170 MHz | 21 | // Main system clock at 170 MHz |
| 22 | div_r: Some(PllR::DIV2), | 22 | divr: Some(PllRDiv::DIV2), |
| 23 | }); | 23 | }); |
| 24 | 24 | ||
| 25 | config.rcc.mux = ClockSrc::PLL; | 25 | config.rcc.sys = Sysclk::PLL1_R; |
| 26 | 26 | ||
| 27 | let _p = embassy_stm32::init(config); | 27 | let _p = embassy_stm32::init(config); |
| 28 | info!("Hello World!"); | 28 | info!("Hello World!"); |
diff --git a/examples/stm32g4/src/bin/usb_serial.rs b/examples/stm32g4/src/bin/usb_serial.rs index c26fa76b7..989fef5b0 100644 --- a/examples/stm32g4/src/bin/usb_serial.rs +++ b/examples/stm32g4/src/bin/usb_serial.rs | |||
| @@ -3,7 +3,9 @@ | |||
| 3 | 3 | ||
| 4 | use defmt::{panic, *}; | 4 | use defmt::{panic, *}; |
| 5 | use embassy_executor::Spawner; | 5 | use embassy_executor::Spawner; |
| 6 | use embassy_stm32::rcc::{Clock48MhzSrc, ClockSrc, Hsi48Config, Pll, PllM, PllN, PllQ, PllR, PllSource}; | 6 | use embassy_stm32::rcc::{ |
| 7 | Clk48Src, Hse, HseMode, Hsi48Config, Pll, PllMul, PllPreDiv, PllQDiv, PllRDiv, Pllsrc, Sysclk, | ||
| 8 | }; | ||
| 7 | use embassy_stm32::time::Hertz; | 9 | use embassy_stm32::time::Hertz; |
| 8 | use embassy_stm32::usb::{self, Driver, Instance}; | 10 | use embassy_stm32::usb::{self, Driver, Instance}; |
| 9 | use embassy_stm32::{bind_interrupts, peripherals, Config}; | 11 | use embassy_stm32::{bind_interrupts, peripherals, Config}; |
| @@ -24,25 +26,32 @@ async fn main(_spawner: Spawner) { | |||
| 24 | // Change this to `false` to use the HSE clock source for the USB. This example assumes an 8MHz HSE. | 26 | // Change this to `false` to use the HSE clock source for the USB. This example assumes an 8MHz HSE. |
| 25 | const USE_HSI48: bool = true; | 27 | const USE_HSI48: bool = true; |
| 26 | 28 | ||
| 27 | let plldivq = if USE_HSI48 { None } else { Some(PllQ::DIV6) }; | 29 | let plldivq = if USE_HSI48 { None } else { Some(PllQDiv::DIV6) }; |
| 30 | |||
| 31 | config.rcc.hse = Some(Hse { | ||
| 32 | freq: Hertz(8_000_000), | ||
| 33 | mode: HseMode::Oscillator, | ||
| 34 | }); | ||
| 28 | 35 | ||
| 29 | config.rcc.pll = Some(Pll { | 36 | config.rcc.pll = Some(Pll { |
| 30 | source: PllSource::HSE(Hertz(8_000_000)), | 37 | source: Pllsrc::HSE, |
| 31 | prediv_m: PllM::DIV2, | 38 | prediv: PllPreDiv::DIV2, |
| 32 | mul_n: PllN::MUL72, | 39 | mul: PllMul::MUL72, |
| 33 | div_p: None, | 40 | divp: None, |
| 34 | div_q: plldivq, | 41 | divq: plldivq, |
| 35 | // Main system clock at 144 MHz | 42 | // Main system clock at 144 MHz |
| 36 | div_r: Some(PllR::DIV2), | 43 | divr: Some(PllRDiv::DIV2), |
| 37 | }); | 44 | }); |
| 38 | 45 | ||
| 39 | config.rcc.mux = ClockSrc::PLL; | 46 | config.rcc.sys = Sysclk::PLL1_R; |
| 47 | config.rcc.boost = true; // BOOST! | ||
| 40 | 48 | ||
| 41 | if USE_HSI48 { | 49 | if USE_HSI48 { |
| 42 | // Sets up the Clock Recovery System (CRS) to use the USB SOF to trim the HSI48 oscillator. | 50 | // Sets up the Clock Recovery System (CRS) to use the USB SOF to trim the HSI48 oscillator. |
| 43 | config.rcc.clock_48mhz_src = Some(Clock48MhzSrc::Hsi48(Hsi48Config { sync_from_usb: true })); | 51 | config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); |
| 52 | config.rcc.clk48_src = Clk48Src::HSI48; | ||
| 44 | } else { | 53 | } else { |
| 45 | config.rcc.clock_48mhz_src = Some(Clock48MhzSrc::PllQ); | 54 | config.rcc.clk48_src = Clk48Src::PLL1_Q; |
| 46 | } | 55 | } |
| 47 | 56 | ||
| 48 | let p = embassy_stm32::init(config); | 57 | let p = embassy_stm32::init(config); |
