diff options
| author | Dario Nieuwenhuis <[email protected]> | 2024-02-26 03:28:27 +0100 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2024-03-01 23:54:37 +0100 |
| commit | 95234cddbac6f21fce0f5df510d49816f343b87d (patch) | |
| tree | a9daf8a1bb9449191a7174269bc348f3ce61bfef /examples | |
| parent | d5c9c611fa317e066d6cf7c5af0513b40bd69d8c (diff) | |
stm32: autogenerate mux config for all chips.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/stm32f334/src/bin/pwm.rs | 2 | ||||
| -rw-r--r-- | examples/stm32g0/src/bin/hf_timer.rs | 44 | ||||
| -rw-r--r-- | examples/stm32g0/src/bin/usb_serial.rs | 10 | ||||
| -rw-r--r-- | examples/stm32g4/src/bin/adc.rs | 29 | ||||
| -rw-r--r-- | examples/stm32g4/src/bin/can.rs | 21 | ||||
| -rw-r--r-- | examples/stm32g4/src/bin/pll.rs | 1 | ||||
| -rw-r--r-- | examples/stm32g4/src/bin/usb_serial.rs | 50 | ||||
| -rw-r--r-- | examples/stm32h5/src/bin/can.rs | 2 | ||||
| -rw-r--r-- | examples/stm32h5/src/bin/usb_serial.rs | 7 | ||||
| -rw-r--r-- | examples/stm32h7/src/bin/adc.rs | 2 | ||||
| -rw-r--r-- | examples/stm32h7/src/bin/can.rs | 2 | ||||
| -rw-r--r-- | examples/stm32h7/src/bin/dac.rs | 2 | ||||
| -rw-r--r-- | examples/stm32h7/src/bin/dac_dma.rs | 2 | ||||
| -rw-r--r-- | examples/stm32l4/src/bin/adc.rs | 14 |
14 files changed, 93 insertions, 95 deletions
diff --git a/examples/stm32f334/src/bin/pwm.rs b/examples/stm32f334/src/bin/pwm.rs index 7c6d6cd71..e6d1a6c02 100644 --- a/examples/stm32f334/src/bin/pwm.rs +++ b/examples/stm32f334/src/bin/pwm.rs | |||
| @@ -28,7 +28,7 @@ async fn main(_spawner: Spawner) { | |||
| 28 | config.rcc.apb1_pre = APBPrescaler::DIV2; | 28 | config.rcc.apb1_pre = APBPrescaler::DIV2; |
| 29 | config.rcc.apb2_pre = APBPrescaler::DIV1; | 29 | config.rcc.apb2_pre = APBPrescaler::DIV1; |
| 30 | 30 | ||
| 31 | config.rcc.mux.hrtim1sw = Some(embassy_stm32::rcc::mux::Timsw::PLL1_P); | 31 | config.rcc.mux.hrtim1sw = embassy_stm32::rcc::mux::Timsw::PLL1_P; |
| 32 | } | 32 | } |
| 33 | let p = embassy_stm32::init(config); | 33 | let p = embassy_stm32::init(config); |
| 34 | 34 | ||
diff --git a/examples/stm32g0/src/bin/hf_timer.rs b/examples/stm32g0/src/bin/hf_timer.rs index 3f63d0dfd..647ff0419 100644 --- a/examples/stm32g0/src/bin/hf_timer.rs +++ b/examples/stm32g0/src/bin/hf_timer.rs | |||
| @@ -4,37 +4,35 @@ | |||
| 4 | use defmt::info; | 4 | use defmt::info; |
| 5 | use embassy_executor::Spawner; | 5 | use embassy_executor::Spawner; |
| 6 | use embassy_stm32::gpio::OutputType; | 6 | use embassy_stm32::gpio::OutputType; |
| 7 | use embassy_stm32::pac::rcc::vals::Tim1sel; | ||
| 8 | use embassy_stm32::rcc::{Config as RccConfig, PllConfig, PllSource, Pllm, Plln, Pllq, Pllr, Sysclk}; | ||
| 9 | use embassy_stm32::time::khz; | 7 | use embassy_stm32::time::khz; |
| 10 | use embassy_stm32::timer::complementary_pwm::{ComplementaryPwm, ComplementaryPwmPin}; | 8 | use embassy_stm32::timer::complementary_pwm::{ComplementaryPwm, ComplementaryPwmPin}; |
| 11 | use embassy_stm32::timer::simple_pwm::PwmPin; | 9 | use embassy_stm32::timer::simple_pwm::PwmPin; |
| 12 | use embassy_stm32::timer::Channel; | 10 | use embassy_stm32::timer::Channel; |
| 13 | use embassy_stm32::{pac, Config as PeripheralConfig}; | 11 | use embassy_stm32::Config as PeripheralConfig; |
| 14 | use {defmt_rtt as _, panic_probe as _}; | 12 | use {defmt_rtt as _, panic_probe as _}; |
| 15 | 13 | ||
| 16 | #[embassy_executor::main] | 14 | #[embassy_executor::main] |
| 17 | async fn main(_spawner: Spawner) { | 15 | async fn main(_spawner: Spawner) { |
| 18 | let mut rcc_config = RccConfig::default(); | 16 | let mut config = PeripheralConfig::default(); |
| 19 | rcc_config.sys = Sysclk::PLL(PllConfig { | 17 | { |
| 20 | source: PllSource::HSI, | 18 | use embassy_stm32::rcc::*; |
| 21 | m: Pllm::DIV1, | 19 | |
| 22 | n: Plln::MUL16, | 20 | config.rcc.sys = Sysclk::PLL(PllConfig { |
| 23 | r: Pllr::DIV4, // CPU clock comes from PLLR (HSI (16MHz) / 1 * 16 / 4 = 64MHz) | 21 | source: PllSource::HSI, |
| 24 | q: Some(Pllq::DIV2), // TIM1 or TIM15 can be sourced from PLLQ (HSI (16MHz) / 1 * 16 / 2 = 128MHz) | 22 | m: Pllm::DIV1, |
| 25 | p: None, | 23 | n: Plln::MUL16, |
| 26 | }); | 24 | r: Pllr::DIV4, // CPU clock comes from PLLR (HSI (16MHz) / 1 * 16 / 4 = 64MHz) |
| 27 | 25 | q: Some(Pllq::DIV2), // TIM1 or TIM15 can be sourced from PLLQ (HSI (16MHz) / 1 * 16 / 2 = 128MHz) | |
| 28 | let mut peripheral_config = PeripheralConfig::default(); | 26 | p: None, |
| 29 | peripheral_config.rcc = rcc_config; | 27 | }); |
| 30 | 28 | ||
| 31 | let p = embassy_stm32::init(peripheral_config); | 29 | // configure TIM1 mux to select PLLQ as clock source |
| 32 | 30 | // https://www.st.com/resource/en/reference_manual/rm0444-stm32g0x1-advanced-armbased-32bit-mcus-stmicroelectronics.pdf | |
| 33 | // configure TIM1 mux to select PLLQ as clock source | 31 | // RM0444 page 210 |
| 34 | // https://www.st.com/resource/en/reference_manual/rm0444-stm32g0x1-advanced-armbased-32bit-mcus-stmicroelectronics.pdf | 32 | // RCC - Peripherals Independent Clock Control Register - bit 22 -> 1 |
| 35 | // RM0444 page 210 | 33 | config.rcc.mux.tim1sel = embassy_stm32::rcc::mux::Tim1sel::PLL1_Q; |
| 36 | // RCC - Peripherals Independent Clock Control Register - bit 22 -> 1 | 34 | } |
| 37 | pac::RCC.ccipr().modify(|w| w.set_tim1sel(Tim1sel::PLL1_Q)); | 35 | let p = embassy_stm32::init(config); |
| 38 | 36 | ||
| 39 | let ch1 = PwmPin::new_ch1(p.PA8, OutputType::PushPull); | 37 | let ch1 = PwmPin::new_ch1(p.PA8, OutputType::PushPull); |
| 40 | let ch1n = ComplementaryPwmPin::new_ch1(p.PA7, OutputType::PushPull); | 38 | let ch1n = ComplementaryPwmPin::new_ch1(p.PA7, OutputType::PushPull); |
diff --git a/examples/stm32g0/src/bin/usb_serial.rs b/examples/stm32g0/src/bin/usb_serial.rs index f5aaa5624..8b9915626 100644 --- a/examples/stm32g0/src/bin/usb_serial.rs +++ b/examples/stm32g0/src/bin/usb_serial.rs | |||
| @@ -4,7 +4,6 @@ | |||
| 4 | use defmt::{panic, *}; | 4 | use defmt::{panic, *}; |
| 5 | use embassy_executor::Spawner; | 5 | use embassy_executor::Spawner; |
| 6 | use embassy_futures::join::join; | 6 | use embassy_futures::join::join; |
| 7 | use embassy_stm32::rcc::{Hsi48Config, UsbSrc}; | ||
| 8 | use embassy_stm32::usb::{Driver, Instance}; | 7 | use embassy_stm32::usb::{Driver, Instance}; |
| 9 | use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; | 8 | use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; |
| 10 | use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; | 9 | use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; |
| @@ -19,10 +18,11 @@ bind_interrupts!(struct Irqs { | |||
| 19 | #[embassy_executor::main] | 18 | #[embassy_executor::main] |
| 20 | async fn main(_spawner: Spawner) { | 19 | async fn main(_spawner: Spawner) { |
| 21 | let mut config = Config::default(); | 20 | let mut config = Config::default(); |
| 22 | config.rcc.usb_src = Some(UsbSrc::Hsi48(Hsi48Config { | 21 | { |
| 23 | sync_from_usb: true, | 22 | use embassy_stm32::rcc::*; |
| 24 | ..Default::default() | 23 | config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); |
| 25 | })); | 24 | config.rcc.mux.usbsel = mux::Usbsel::HSI48; |
| 25 | } | ||
| 26 | let p = embassy_stm32::init(config); | 26 | let p = embassy_stm32::init(config); |
| 27 | 27 | ||
| 28 | info!("Hello World!"); | 28 | info!("Hello World!"); |
diff --git a/examples/stm32g4/src/bin/adc.rs b/examples/stm32g4/src/bin/adc.rs index 6c6de1ffe..f81335f93 100644 --- a/examples/stm32g4/src/bin/adc.rs +++ b/examples/stm32g4/src/bin/adc.rs | |||
| @@ -4,7 +4,6 @@ | |||
| 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, Pll, PllMul, PllPreDiv, PllRDiv, Pllsrc, Sysclk}; | ||
| 8 | use embassy_stm32::Config; | 7 | use embassy_stm32::Config; |
| 9 | use embassy_time::{Delay, Timer}; | 8 | use embassy_time::{Delay, Timer}; |
| 10 | use {defmt_rtt as _, panic_probe as _}; | 9 | use {defmt_rtt as _, panic_probe as _}; |
| @@ -12,20 +11,20 @@ use {defmt_rtt as _, panic_probe as _}; | |||
| 12 | #[embassy_executor::main] | 11 | #[embassy_executor::main] |
| 13 | async fn main(_spawner: Spawner) { | 12 | async fn main(_spawner: Spawner) { |
| 14 | let mut config = Config::default(); | 13 | let mut config = Config::default(); |
| 15 | 14 | { | |
| 16 | config.rcc.pll = Some(Pll { | 15 | use embassy_stm32::rcc::*; |
| 17 | source: Pllsrc::HSI, | 16 | config.rcc.pll = Some(Pll { |
| 18 | prediv: PllPreDiv::DIV4, | 17 | source: Pllsrc::HSI, |
| 19 | mul: PllMul::MUL85, | 18 | prediv: PllPreDiv::DIV4, |
| 20 | divp: None, | 19 | mul: PllMul::MUL85, |
| 21 | divq: None, | 20 | divp: None, |
| 22 | // Main system clock at 170 MHz | 21 | divq: None, |
| 23 | divr: Some(PllRDiv::DIV2), | 22 | // Main system clock at 170 MHz |
| 24 | }); | 23 | divr: Some(PllRDiv::DIV2), |
| 25 | 24 | }); | |
| 26 | config.rcc.adc12_clock_source = AdcClockSource::SYS; | 25 | config.rcc.mux.adc12sel = mux::Adcsel::SYS; |
| 27 | config.rcc.sys = Sysclk::PLL1_R; | 26 | config.rcc.sys = Sysclk::PLL1_R; |
| 28 | 27 | } | |
| 29 | let mut p = embassy_stm32::init(config); | 28 | let mut p = embassy_stm32::init(config); |
| 30 | info!("Hello World!"); | 29 | info!("Hello World!"); |
| 31 | 30 | ||
diff --git a/examples/stm32g4/src/bin/can.rs b/examples/stm32g4/src/bin/can.rs index a41f765c1..7551b2a55 100644 --- a/examples/stm32g4/src/bin/can.rs +++ b/examples/stm32g4/src/bin/can.rs | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | use defmt::*; | 3 | use defmt::*; |
| 4 | use embassy_executor::Spawner; | 4 | use embassy_executor::Spawner; |
| 5 | use embassy_stm32::peripherals::*; | 5 | use embassy_stm32::peripherals::*; |
| 6 | use embassy_stm32::time::Hertz; | ||
| 6 | use embassy_stm32::{bind_interrupts, can, Config}; | 7 | use embassy_stm32::{bind_interrupts, can, Config}; |
| 7 | use embassy_time::Timer; | 8 | use embassy_time::Timer; |
| 8 | use static_cell::StaticCell; | 9 | use static_cell::StaticCell; |
| @@ -15,8 +16,24 @@ bind_interrupts!(struct Irqs { | |||
| 15 | 16 | ||
| 16 | #[embassy_executor::main] | 17 | #[embassy_executor::main] |
| 17 | async fn main(_spawner: Spawner) { | 18 | async fn main(_spawner: Spawner) { |
| 18 | let config = Config::default(); | 19 | let mut config = Config::default(); |
| 19 | 20 | { | |
| 21 | use embassy_stm32::rcc::*; | ||
| 22 | config.rcc.hse = Some(Hse { | ||
| 23 | freq: Hertz(24_000_000), | ||
| 24 | mode: HseMode::Oscillator, | ||
| 25 | }); | ||
| 26 | config.rcc.pll = Some(Pll { | ||
| 27 | source: Pllsrc::HSE, | ||
| 28 | prediv: PllPreDiv::DIV6, | ||
| 29 | mul: PllMul::MUL85, | ||
| 30 | divp: None, | ||
| 31 | divq: Some(PllQDiv::DIV8), // 42.5 Mhz for fdcan. | ||
| 32 | divr: Some(PllRDiv::DIV2), // Main system clock at 170 MHz | ||
| 33 | }); | ||
| 34 | config.rcc.mux.fdcansel = mux::Fdcansel::PLL1_Q; | ||
| 35 | config.rcc.sys = Sysclk::PLL1_R; | ||
| 36 | } | ||
| 20 | let peripherals = embassy_stm32::init(config); | 37 | let peripherals = embassy_stm32::init(config); |
| 21 | 38 | ||
| 22 | let mut can = can::FdcanConfigurator::new(peripherals.FDCAN1, peripherals.PA11, peripherals.PA12, Irqs); | 39 | let mut can = can::FdcanConfigurator::new(peripherals.FDCAN1, peripherals.PA11, peripherals.PA12, Irqs); |
diff --git a/examples/stm32g4/src/bin/pll.rs b/examples/stm32g4/src/bin/pll.rs index 5274de79d..2609abfa2 100644 --- a/examples/stm32g4/src/bin/pll.rs +++ b/examples/stm32g4/src/bin/pll.rs | |||
| @@ -12,6 +12,7 @@ use {defmt_rtt as _, panic_probe as _}; | |||
| 12 | async fn main(_spawner: Spawner) { | 12 | async fn main(_spawner: Spawner) { |
| 13 | let mut config = Config::default(); | 13 | let mut config = Config::default(); |
| 14 | 14 | ||
| 15 | config.rcc.hsi = true; | ||
| 15 | config.rcc.pll = Some(Pll { | 16 | config.rcc.pll = Some(Pll { |
| 16 | source: Pllsrc::HSI, | 17 | source: Pllsrc::HSI, |
| 17 | prediv: PllPreDiv::DIV4, | 18 | prediv: PllPreDiv::DIV4, |
diff --git a/examples/stm32g4/src/bin/usb_serial.rs b/examples/stm32g4/src/bin/usb_serial.rs index 989fef5b0..90caaae14 100644 --- a/examples/stm32g4/src/bin/usb_serial.rs +++ b/examples/stm32g4/src/bin/usb_serial.rs | |||
| @@ -3,9 +3,6 @@ | |||
| 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::{ | ||
| 7 | Clk48Src, Hse, HseMode, Hsi48Config, Pll, PllMul, PllPreDiv, PllQDiv, PllRDiv, Pllsrc, Sysclk, | ||
| 8 | }; | ||
| 9 | use embassy_stm32::time::Hertz; | 6 | use embassy_stm32::time::Hertz; |
| 10 | use embassy_stm32::usb::{self, Driver, Instance}; | 7 | use embassy_stm32::usb::{self, Driver, Instance}; |
| 11 | use embassy_stm32::{bind_interrupts, peripherals, Config}; | 8 | use embassy_stm32::{bind_interrupts, peripherals, Config}; |
| @@ -22,38 +19,27 @@ bind_interrupts!(struct Irqs { | |||
| 22 | #[embassy_executor::main] | 19 | #[embassy_executor::main] |
| 23 | async fn main(_spawner: Spawner) { | 20 | async fn main(_spawner: Spawner) { |
| 24 | let mut config = Config::default(); | 21 | let mut config = Config::default(); |
| 25 | 22 | { | |
| 26 | // Change this to `false` to use the HSE clock source for the USB. This example assumes an 8MHz HSE. | 23 | use embassy_stm32::rcc::*; |
| 27 | const USE_HSI48: bool = true; | ||
| 28 | |||
| 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 | }); | ||
| 35 | |||
| 36 | config.rcc.pll = Some(Pll { | ||
| 37 | source: Pllsrc::HSE, | ||
| 38 | prediv: PllPreDiv::DIV2, | ||
| 39 | mul: PllMul::MUL72, | ||
| 40 | divp: None, | ||
| 41 | divq: plldivq, | ||
| 42 | // Main system clock at 144 MHz | ||
| 43 | divr: Some(PllRDiv::DIV2), | ||
| 44 | }); | ||
| 45 | |||
| 46 | config.rcc.sys = Sysclk::PLL1_R; | ||
| 47 | config.rcc.boost = true; // BOOST! | ||
| 48 | |||
| 49 | if USE_HSI48 { | ||
| 50 | // Sets up the Clock Recovery System (CRS) to use the USB SOF to trim the HSI48 oscillator. | 24 | // Sets up the Clock Recovery System (CRS) to use the USB SOF to trim the HSI48 oscillator. |
| 51 | config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); | 25 | config.rcc.hsi48 = Some(Hsi48Config { sync_from_usb: true }); |
| 52 | config.rcc.clk48_src = Clk48Src::HSI48; | 26 | config.rcc.hse = Some(Hse { |
| 53 | } else { | 27 | freq: Hertz(8_000_000), |
| 54 | config.rcc.clk48_src = Clk48Src::PLL1_Q; | 28 | mode: HseMode::Oscillator, |
| 29 | }); | ||
| 30 | config.rcc.pll = Some(Pll { | ||
| 31 | source: Pllsrc::HSE, | ||
| 32 | prediv: PllPreDiv::DIV2, | ||
| 33 | mul: PllMul::MUL72, | ||
| 34 | divp: None, | ||
| 35 | divq: Some(PllQDiv::DIV6), // 48mhz | ||
| 36 | divr: Some(PllRDiv::DIV2), // Main system clock at 144 MHz | ||
| 37 | }); | ||
| 38 | config.rcc.sys = Sysclk::PLL1_R; | ||
| 39 | config.rcc.boost = true; // BOOST! | ||
| 40 | config.rcc.mux.clk48sel = mux::Clk48sel::HSI48; | ||
| 41 | //config.rcc.mux.clk48sel = mux::Clk48sel::PLL1_Q; // uncomment to use PLL1_Q instead. | ||
| 55 | } | 42 | } |
| 56 | |||
| 57 | let p = embassy_stm32::init(config); | 43 | let p = embassy_stm32::init(config); |
| 58 | 44 | ||
| 59 | info!("Hello World!"); | 45 | info!("Hello World!"); |
diff --git a/examples/stm32h5/src/bin/can.rs b/examples/stm32h5/src/bin/can.rs index e5ccfe4f7..643df27f9 100644 --- a/examples/stm32h5/src/bin/can.rs +++ b/examples/stm32h5/src/bin/can.rs | |||
| @@ -20,7 +20,7 @@ async fn main(_spawner: Spawner) { | |||
| 20 | freq: embassy_stm32::time::Hertz(25_000_000), | 20 | freq: embassy_stm32::time::Hertz(25_000_000), |
| 21 | mode: rcc::HseMode::Oscillator, | 21 | mode: rcc::HseMode::Oscillator, |
| 22 | }); | 22 | }); |
| 23 | config.rcc.fdcan_clock_source = rcc::FdCanClockSource::HSE; | 23 | config.rcc.mux.fdcan12sel = rcc::mux::Fdcansel::HSE; |
| 24 | 24 | ||
| 25 | let peripherals = embassy_stm32::init(config); | 25 | let peripherals = embassy_stm32::init(config); |
| 26 | 26 | ||
diff --git a/examples/stm32h5/src/bin/usb_serial.rs b/examples/stm32h5/src/bin/usb_serial.rs index 208493d8c..83477c8fa 100644 --- a/examples/stm32h5/src/bin/usb_serial.rs +++ b/examples/stm32h5/src/bin/usb_serial.rs | |||
| @@ -5,7 +5,7 @@ use defmt::{panic, *}; | |||
| 5 | use embassy_executor::Spawner; | 5 | use embassy_executor::Spawner; |
| 6 | use embassy_stm32::time::Hertz; | 6 | use embassy_stm32::time::Hertz; |
| 7 | use embassy_stm32::usb::{Driver, Instance}; | 7 | use embassy_stm32::usb::{Driver, Instance}; |
| 8 | use embassy_stm32::{bind_interrupts, pac, peripherals, usb, Config}; | 8 | use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; |
| 9 | use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; | 9 | use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; |
| 10 | use embassy_usb::driver::EndpointError; | 10 | use embassy_usb::driver::EndpointError; |
| 11 | use embassy_usb::Builder; | 11 | use embassy_usb::Builder; |
| @@ -41,15 +41,12 @@ async fn main(_spawner: Spawner) { | |||
| 41 | config.rcc.apb3_pre = APBPrescaler::DIV4; | 41 | config.rcc.apb3_pre = APBPrescaler::DIV4; |
| 42 | config.rcc.sys = Sysclk::PLL1_P; | 42 | config.rcc.sys = Sysclk::PLL1_P; |
| 43 | config.rcc.voltage_scale = VoltageScale::Scale0; | 43 | config.rcc.voltage_scale = VoltageScale::Scale0; |
| 44 | config.rcc.mux.usbsel = mux::Usbsel::HSI48; | ||
| 44 | } | 45 | } |
| 45 | let p = embassy_stm32::init(config); | 46 | let p = embassy_stm32::init(config); |
| 46 | 47 | ||
| 47 | info!("Hello World!"); | 48 | info!("Hello World!"); |
| 48 | 49 | ||
| 49 | pac::RCC.ccipr4().write(|w| { | ||
| 50 | w.set_usbsel(pac::rcc::vals::Usbsel::HSI48); | ||
| 51 | }); | ||
| 52 | |||
| 53 | // Create the driver, from the HAL. | 50 | // Create the driver, from the HAL. |
| 54 | let driver = Driver::new(p.USB, Irqs, p.PA12, p.PA11); | 51 | let driver = Driver::new(p.USB, Irqs, p.PA12, p.PA11); |
| 55 | 52 | ||
diff --git a/examples/stm32h7/src/bin/adc.rs b/examples/stm32h7/src/bin/adc.rs index f0278239f..a5594d10c 100644 --- a/examples/stm32h7/src/bin/adc.rs +++ b/examples/stm32h7/src/bin/adc.rs | |||
| @@ -38,7 +38,7 @@ async fn main(_spawner: Spawner) { | |||
| 38 | config.rcc.apb3_pre = APBPrescaler::DIV2; // 100 Mhz | 38 | config.rcc.apb3_pre = APBPrescaler::DIV2; // 100 Mhz |
| 39 | config.rcc.apb4_pre = APBPrescaler::DIV2; // 100 Mhz | 39 | config.rcc.apb4_pre = APBPrescaler::DIV2; // 100 Mhz |
| 40 | config.rcc.voltage_scale = VoltageScale::Scale1; | 40 | config.rcc.voltage_scale = VoltageScale::Scale1; |
| 41 | config.rcc.adc_clock_source = AdcClockSource::PLL2_P; | 41 | config.rcc.mux.adcsel = mux::Adcsel::PLL2_P; |
| 42 | } | 42 | } |
| 43 | let mut p = embassy_stm32::init(config); | 43 | let mut p = embassy_stm32::init(config); |
| 44 | 44 | ||
diff --git a/examples/stm32h7/src/bin/can.rs b/examples/stm32h7/src/bin/can.rs index e5ccfe4f7..13a6a5051 100644 --- a/examples/stm32h7/src/bin/can.rs +++ b/examples/stm32h7/src/bin/can.rs | |||
| @@ -20,7 +20,7 @@ async fn main(_spawner: Spawner) { | |||
| 20 | freq: embassy_stm32::time::Hertz(25_000_000), | 20 | freq: embassy_stm32::time::Hertz(25_000_000), |
| 21 | mode: rcc::HseMode::Oscillator, | 21 | mode: rcc::HseMode::Oscillator, |
| 22 | }); | 22 | }); |
| 23 | config.rcc.fdcan_clock_source = rcc::FdCanClockSource::HSE; | 23 | config.rcc.mux.fdcansel = rcc::mux::Fdcansel::HSE; |
| 24 | 24 | ||
| 25 | let peripherals = embassy_stm32::init(config); | 25 | let peripherals = embassy_stm32::init(config); |
| 26 | 26 | ||
diff --git a/examples/stm32h7/src/bin/dac.rs b/examples/stm32h7/src/bin/dac.rs index a9bf46de0..a6f969aba 100644 --- a/examples/stm32h7/src/bin/dac.rs +++ b/examples/stm32h7/src/bin/dac.rs | |||
| @@ -40,7 +40,7 @@ fn main() -> ! { | |||
| 40 | config.rcc.apb3_pre = APBPrescaler::DIV2; // 100 Mhz | 40 | config.rcc.apb3_pre = APBPrescaler::DIV2; // 100 Mhz |
| 41 | config.rcc.apb4_pre = APBPrescaler::DIV2; // 100 Mhz | 41 | config.rcc.apb4_pre = APBPrescaler::DIV2; // 100 Mhz |
| 42 | config.rcc.voltage_scale = VoltageScale::Scale1; | 42 | config.rcc.voltage_scale = VoltageScale::Scale1; |
| 43 | config.rcc.adc_clock_source = AdcClockSource::PLL2_P; | 43 | config.rcc.mux.adcsel = mux::Adcsel::PLL2_P; |
| 44 | } | 44 | } |
| 45 | let p = embassy_stm32::init(config); | 45 | let p = embassy_stm32::init(config); |
| 46 | 46 | ||
diff --git a/examples/stm32h7/src/bin/dac_dma.rs b/examples/stm32h7/src/bin/dac_dma.rs index d88bd838f..feec28993 100644 --- a/examples/stm32h7/src/bin/dac_dma.rs +++ b/examples/stm32h7/src/bin/dac_dma.rs | |||
| @@ -42,7 +42,7 @@ async fn main(spawner: Spawner) { | |||
| 42 | config.rcc.apb3_pre = APBPrescaler::DIV2; // 100 Mhz | 42 | config.rcc.apb3_pre = APBPrescaler::DIV2; // 100 Mhz |
| 43 | config.rcc.apb4_pre = APBPrescaler::DIV2; // 100 Mhz | 43 | config.rcc.apb4_pre = APBPrescaler::DIV2; // 100 Mhz |
| 44 | config.rcc.voltage_scale = VoltageScale::Scale1; | 44 | config.rcc.voltage_scale = VoltageScale::Scale1; |
| 45 | config.rcc.adc_clock_source = AdcClockSource::PLL2_P; | 45 | config.rcc.mux.adcsel = mux::Adcsel::PLL2_P; |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | // Initialize the board and obtain a Peripherals instance | 48 | // Initialize the board and obtain a Peripherals instance |
diff --git a/examples/stm32l4/src/bin/adc.rs b/examples/stm32l4/src/bin/adc.rs index 910944673..a9f4604aa 100644 --- a/examples/stm32l4/src/bin/adc.rs +++ b/examples/stm32l4/src/bin/adc.rs | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | use defmt::*; | 4 | use defmt::*; |
| 5 | use embassy_stm32::adc::{Adc, Resolution}; | 5 | use embassy_stm32::adc::{Adc, Resolution}; |
| 6 | use embassy_stm32::pac; | 6 | use embassy_stm32::Config; |
| 7 | use embassy_time::Delay; | 7 | use embassy_time::Delay; |
| 8 | use {defmt_rtt as _, panic_probe as _}; | 8 | use {defmt_rtt as _, panic_probe as _}; |
| 9 | 9 | ||
| @@ -11,12 +11,12 @@ use {defmt_rtt as _, panic_probe as _}; | |||
| 11 | fn main() -> ! { | 11 | fn main() -> ! { |
| 12 | info!("Hello World!"); | 12 | info!("Hello World!"); |
| 13 | 13 | ||
| 14 | pac::RCC.ccipr().modify(|w| { | 14 | let mut config = Config::default(); |
| 15 | w.set_adcsel(pac::rcc::vals::Adcsel::SYS); | 15 | { |
| 16 | }); | 16 | use embassy_stm32::rcc::*; |
| 17 | pac::RCC.ahb2enr().modify(|w| w.set_adcen(true)); | 17 | config.rcc.mux.adcsel = mux::Adcsel::SYS; |
| 18 | 18 | } | |
| 19 | let p = embassy_stm32::init(Default::default()); | 19 | let p = embassy_stm32::init(config); |
| 20 | 20 | ||
| 21 | let mut adc = Adc::new(p.ADC1, &mut Delay); | 21 | let mut adc = Adc::new(p.ADC1, &mut Delay); |
| 22 | //adc.enable_vref(); | 22 | //adc.enable_vref(); |
