aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-02-26 03:28:27 +0100
committerDario Nieuwenhuis <[email protected]>2024-03-01 23:54:37 +0100
commit95234cddbac6f21fce0f5df510d49816f343b87d (patch)
treea9daf8a1bb9449191a7174269bc348f3ce61bfef /examples
parentd5c9c611fa317e066d6cf7c5af0513b40bd69d8c (diff)
stm32: autogenerate mux config for all chips.
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32f334/src/bin/pwm.rs2
-rw-r--r--examples/stm32g0/src/bin/hf_timer.rs44
-rw-r--r--examples/stm32g0/src/bin/usb_serial.rs10
-rw-r--r--examples/stm32g4/src/bin/adc.rs29
-rw-r--r--examples/stm32g4/src/bin/can.rs21
-rw-r--r--examples/stm32g4/src/bin/pll.rs1
-rw-r--r--examples/stm32g4/src/bin/usb_serial.rs50
-rw-r--r--examples/stm32h5/src/bin/can.rs2
-rw-r--r--examples/stm32h5/src/bin/usb_serial.rs7
-rw-r--r--examples/stm32h7/src/bin/adc.rs2
-rw-r--r--examples/stm32h7/src/bin/can.rs2
-rw-r--r--examples/stm32h7/src/bin/dac.rs2
-rw-r--r--examples/stm32h7/src/bin/dac_dma.rs2
-rw-r--r--examples/stm32l4/src/bin/adc.rs14
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 @@
4use defmt::info; 4use defmt::info;
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::gpio::OutputType; 6use embassy_stm32::gpio::OutputType;
7use embassy_stm32::pac::rcc::vals::Tim1sel;
8use embassy_stm32::rcc::{Config as RccConfig, PllConfig, PllSource, Pllm, Plln, Pllq, Pllr, Sysclk};
9use embassy_stm32::time::khz; 7use embassy_stm32::time::khz;
10use embassy_stm32::timer::complementary_pwm::{ComplementaryPwm, ComplementaryPwmPin}; 8use embassy_stm32::timer::complementary_pwm::{ComplementaryPwm, ComplementaryPwmPin};
11use embassy_stm32::timer::simple_pwm::PwmPin; 9use embassy_stm32::timer::simple_pwm::PwmPin;
12use embassy_stm32::timer::Channel; 10use embassy_stm32::timer::Channel;
13use embassy_stm32::{pac, Config as PeripheralConfig}; 11use embassy_stm32::Config as PeripheralConfig;
14use {defmt_rtt as _, panic_probe as _}; 12use {defmt_rtt as _, panic_probe as _};
15 13
16#[embassy_executor::main] 14#[embassy_executor::main]
17async fn main(_spawner: Spawner) { 15async 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 @@
4use defmt::{panic, *}; 4use defmt::{panic, *};
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_futures::join::join; 6use embassy_futures::join::join;
7use embassy_stm32::rcc::{Hsi48Config, UsbSrc};
8use embassy_stm32::usb::{Driver, Instance}; 7use embassy_stm32::usb::{Driver, Instance};
9use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; 8use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
10use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; 9use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
@@ -19,10 +18,11 @@ bind_interrupts!(struct Irqs {
19#[embassy_executor::main] 18#[embassy_executor::main]
20async fn main(_spawner: Spawner) { 19async 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 @@
4use defmt::*; 4use defmt::*;
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::adc::{Adc, SampleTime}; 6use embassy_stm32::adc::{Adc, SampleTime};
7use embassy_stm32::rcc::{AdcClockSource, Pll, PllMul, PllPreDiv, PllRDiv, Pllsrc, Sysclk};
8use embassy_stm32::Config; 7use embassy_stm32::Config;
9use embassy_time::{Delay, Timer}; 8use embassy_time::{Delay, Timer};
10use {defmt_rtt as _, panic_probe as _}; 9use {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]
13async fn main(_spawner: Spawner) { 12async 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 @@
3use defmt::*; 3use defmt::*;
4use embassy_executor::Spawner; 4use embassy_executor::Spawner;
5use embassy_stm32::peripherals::*; 5use embassy_stm32::peripherals::*;
6use embassy_stm32::time::Hertz;
6use embassy_stm32::{bind_interrupts, can, Config}; 7use embassy_stm32::{bind_interrupts, can, Config};
7use embassy_time::Timer; 8use embassy_time::Timer;
8use static_cell::StaticCell; 9use static_cell::StaticCell;
@@ -15,8 +16,24 @@ bind_interrupts!(struct Irqs {
15 16
16#[embassy_executor::main] 17#[embassy_executor::main]
17async fn main(_spawner: Spawner) { 18async 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 _};
12async fn main(_spawner: Spawner) { 12async 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
4use defmt::{panic, *}; 4use defmt::{panic, *};
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::rcc::{
7 Clk48Src, Hse, HseMode, Hsi48Config, Pll, PllMul, PllPreDiv, PllQDiv, PllRDiv, Pllsrc, Sysclk,
8};
9use embassy_stm32::time::Hertz; 6use embassy_stm32::time::Hertz;
10use embassy_stm32::usb::{self, Driver, Instance}; 7use embassy_stm32::usb::{self, Driver, Instance};
11use embassy_stm32::{bind_interrupts, peripherals, Config}; 8use embassy_stm32::{bind_interrupts, peripherals, Config};
@@ -22,38 +19,27 @@ bind_interrupts!(struct Irqs {
22#[embassy_executor::main] 19#[embassy_executor::main]
23async fn main(_spawner: Spawner) { 20async 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, *};
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::time::Hertz; 6use embassy_stm32::time::Hertz;
7use embassy_stm32::usb::{Driver, Instance}; 7use embassy_stm32::usb::{Driver, Instance};
8use embassy_stm32::{bind_interrupts, pac, peripherals, usb, Config}; 8use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
9use embassy_usb::class::cdc_acm::{CdcAcmClass, State}; 9use embassy_usb::class::cdc_acm::{CdcAcmClass, State};
10use embassy_usb::driver::EndpointError; 10use embassy_usb::driver::EndpointError;
11use embassy_usb::Builder; 11use 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
4use defmt::*; 4use defmt::*;
5use embassy_stm32::adc::{Adc, Resolution}; 5use embassy_stm32::adc::{Adc, Resolution};
6use embassy_stm32::pac; 6use embassy_stm32::Config;
7use embassy_time::Delay; 7use embassy_time::Delay;
8use {defmt_rtt as _, panic_probe as _}; 8use {defmt_rtt as _, panic_probe as _};
9 9
@@ -11,12 +11,12 @@ use {defmt_rtt as _, panic_probe as _};
11fn main() -> ! { 11fn 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();