aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/stm32wba/src/bin/usb_hs_serial.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/examples/stm32wba/src/bin/usb_hs_serial.rs b/examples/stm32wba/src/bin/usb_hs_serial.rs
index e30f33625..bda4a5013 100644
--- a/examples/stm32wba/src/bin/usb_hs_serial.rs
+++ b/examples/stm32wba/src/bin/usb_hs_serial.rs
@@ -5,7 +5,7 @@ use defmt::{panic, *};
5use defmt_rtt as _; // global logger 5use defmt_rtt as _; // global logger
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_futures::join::join; 7use embassy_futures::join::join;
8use embassy_stm32::rcc::PllSource; 8use embassy_stm32::rcc::{PllSource, PllPreDiv, PllMul, PllDiv};
9use embassy_stm32::rcc::{mux, AHBPrescaler, APBPrescaler, Hse, HsePrescaler, Sysclk, VoltageScale}; 9use embassy_stm32::rcc::{mux, AHBPrescaler, APBPrescaler, Hse, HsePrescaler, Sysclk, VoltageScale};
10use embassy_stm32::usb::{Driver, Instance}; 10use embassy_stm32::usb::{Driver, Instance};
11use embassy_stm32::{bind_interrupts, peripherals, usb, Config}; 11use embassy_stm32::{bind_interrupts, peripherals, usb, Config};
@@ -26,21 +26,18 @@ async fn main(_spawner: Spawner) {
26 26
27 // External HSE (32 MHz) setup 27 // External HSE (32 MHz) setup
28 config.rcc.hse = Some(Hse { 28 config.rcc.hse = Some(Hse {
29 prescaler: HsePrescaler::DIV1, 29 prescaler: HsePrescaler::DIV2,
30 }); 30 });
31 31
32 // route HSE into the USB‐OTG‐HS block
33 config.rcc.mux.otghssel = mux::Otghssel::HSE;
34 config.rcc.sys = Sysclk::HSE;
35 32
36 // Fine-tune PLL1 dividers/multipliers 33 // Fine-tune PLL1 dividers/multipliers
37 config.rcc.pll1 = Some(embassy_stm32::rcc::Pll { 34 config.rcc.pll1 = Some(embassy_stm32::rcc::Pll {
38 source: PllSource::HSE, 35 source: PllSource::HSE,
39 pllm: 2.into(), // PLLM = 2 → HSE / 2 = 16 MHz input 36 prediv: PllPreDiv::DIV2, // PLLM = 2 → HSE / 2 = 8 MHz
40 mul: 12.into(), // PLLN = 1216 MHz * 12 = 192 MHz VCO 37 mul: PllMul::MUL60, // PLLN = 608 MHz * 60 = 480 MHz VCO
41 divp: Some(2.into()), // PLLP = 2 → 96 MHz 38 divr: Some(PllDiv::DIV5), // PLLR = 5 → 96 MHz (Sysclk)
42 divq: Some(2.into()), // PLLQ = 296 MHz 39 divq: Some(PllDiv::DIV10), // PLLQ = 1048 MHz (USB)
43 divr: Some(2.into()), // PLLR = 296 MHz 40 divp: Some(PllDiv::DIV15), // PLLP = 1532 MHz (USBOTG)
44 frac: Some(4096), // Fractional part (enabled) 41 frac: Some(4096), // Fractional part (enabled)
45 }); 42 });
46 43
@@ -51,6 +48,9 @@ async fn main(_spawner: Spawner) {
51 48
52 // voltage scale for max performance 49 // voltage scale for max performance
53 config.rcc.voltage_scale = VoltageScale::RANGE1; 50 config.rcc.voltage_scale = VoltageScale::RANGE1;
51 // route PLL1_P into the USB‐OTG‐HS block
52 config.rcc.mux.otghssel = mux::Otghssel::PLL1_P;
53 config.rcc.sys = Sysclk::PLL1_R;
54 54
55 let p = embassy_stm32::init(config); 55 let p = embassy_stm32::init(config);
56 56