diff options
Diffstat (limited to 'examples/stm32wba6/src/bin/blinky.rs')
| -rw-r--r-- | examples/stm32wba6/src/bin/blinky.rs | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/examples/stm32wba6/src/bin/blinky.rs b/examples/stm32wba6/src/bin/blinky.rs index 0d803b257..95f3339b7 100644 --- a/examples/stm32wba6/src/bin/blinky.rs +++ b/examples/stm32wba6/src/bin/blinky.rs | |||
| @@ -3,16 +3,45 @@ | |||
| 3 | 3 | ||
| 4 | use defmt::*; | 4 | use defmt::*; |
| 5 | use embassy_executor::Spawner; | 5 | use embassy_executor::Spawner; |
| 6 | use embassy_stm32::Config; | ||
| 6 | use embassy_stm32::gpio::{Level, Output, Speed}; | 7 | use embassy_stm32::gpio::{Level, Output, Speed}; |
| 8 | use embassy_stm32::rcc::{ | ||
| 9 | AHB5Prescaler, AHBPrescaler, APBPrescaler, PllDiv, PllMul, PllPreDiv, PllSource, Sysclk, VoltageScale, | ||
| 10 | }; | ||
| 7 | use embassy_time::Timer; | 11 | use embassy_time::Timer; |
| 8 | use {defmt_rtt as _, panic_probe as _}; | 12 | use {defmt_rtt as _, panic_probe as _}; |
| 9 | 13 | ||
| 10 | #[embassy_executor::main] | 14 | #[embassy_executor::main] |
| 11 | async fn main(_spawner: Spawner) { | 15 | async fn main(_spawner: Spawner) { |
| 12 | let p = embassy_stm32::init(Default::default()); | 16 | let mut config = Config::default(); |
| 17 | // Fine-tune PLL1 dividers/multipliers | ||
| 18 | config.rcc.pll1 = Some(embassy_stm32::rcc::Pll { | ||
| 19 | source: PllSource::HSI, | ||
| 20 | prediv: PllPreDiv::DIV1, // PLLM = 1 → HSI / 1 = 16 MHz | ||
| 21 | mul: PllMul::MUL30, // PLLN = 30 → 16 MHz * 30 = 480 MHz VCO | ||
| 22 | divr: Some(PllDiv::DIV5), // PLLR = 5 → 96 MHz (Sysclk) | ||
| 23 | // divq: Some(PllDiv::DIV10), // PLLQ = 10 → 48 MHz (NOT USED) | ||
| 24 | divq: None, | ||
| 25 | divp: Some(PllDiv::DIV30), // PLLP = 30 → 16 MHz (USBOTG) | ||
| 26 | frac: Some(0), // Fractional part (enabled) | ||
| 27 | }); | ||
| 28 | |||
| 29 | config.rcc.ahb_pre = AHBPrescaler::DIV1; | ||
| 30 | config.rcc.apb1_pre = APBPrescaler::DIV1; | ||
| 31 | config.rcc.apb2_pre = APBPrescaler::DIV1; | ||
| 32 | config.rcc.apb7_pre = APBPrescaler::DIV1; | ||
| 33 | config.rcc.ahb5_pre = AHB5Prescaler::DIV4; | ||
| 34 | |||
| 35 | // voltage scale for max performance | ||
| 36 | config.rcc.voltage_scale = VoltageScale::RANGE1; | ||
| 37 | // route PLL1_P into the USB‐OTG‐HS block | ||
| 38 | config.rcc.sys = Sysclk::PLL1_R; | ||
| 39 | |||
| 40 | let p = embassy_stm32::init(config); | ||
| 13 | info!("Hello World!"); | 41 | info!("Hello World!"); |
| 14 | 42 | ||
| 15 | let mut led = Output::new(p.PB4, Level::High, Speed::Low); | 43 | // LD2 - PC4 |
| 44 | let mut led = Output::new(p.PC4, Level::High, Speed::Low); | ||
| 16 | 45 | ||
| 17 | loop { | 46 | loop { |
| 18 | info!("high"); | 47 | info!("high"); |
