diff options
Diffstat (limited to 'examples/stm32h7/src/bin/camera.rs')
| -rw-r--r-- | examples/stm32h7/src/bin/camera.rs | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/examples/stm32h7/src/bin/camera.rs b/examples/stm32h7/src/bin/camera.rs index 6f75a0630..de8ddc292 100644 --- a/examples/stm32h7/src/bin/camera.rs +++ b/examples/stm32h7/src/bin/camera.rs | |||
| @@ -6,8 +6,8 @@ use embassy_executor::Spawner; | |||
| 6 | use embassy_stm32::dcmi::{self, *}; | 6 | use embassy_stm32::dcmi::{self, *}; |
| 7 | use embassy_stm32::gpio::{Level, Output, Speed}; | 7 | use embassy_stm32::gpio::{Level, Output, Speed}; |
| 8 | use embassy_stm32::i2c::I2c; | 8 | use embassy_stm32::i2c::I2c; |
| 9 | use embassy_stm32::rcc::{Mco, Mco1Source, McoClock}; | 9 | use embassy_stm32::rcc::{Mco, Mco1Source}; |
| 10 | use embassy_stm32::time::{khz, mhz}; | 10 | use embassy_stm32::time::khz; |
| 11 | use embassy_stm32::{bind_interrupts, i2c, peripherals, Config}; | 11 | use embassy_stm32::{bind_interrupts, i2c, peripherals, Config}; |
| 12 | use embassy_time::{Duration, Timer}; | 12 | use embassy_time::{Duration, Timer}; |
| 13 | use ov7725::*; | 13 | use ov7725::*; |
| @@ -26,17 +26,30 @@ bind_interrupts!(struct Irqs { | |||
| 26 | #[embassy_executor::main] | 26 | #[embassy_executor::main] |
| 27 | async fn main(_spawner: Spawner) { | 27 | async fn main(_spawner: Spawner) { |
| 28 | let mut config = Config::default(); | 28 | let mut config = Config::default(); |
| 29 | config.rcc.sys_ck = Some(mhz(400)); | 29 | { |
| 30 | config.rcc.hclk = Some(mhz(400)); | 30 | use embassy_stm32::rcc::*; |
| 31 | config.rcc.pll1.q_ck = Some(mhz(100)); | 31 | config.rcc.hsi = Some(Hsi::Mhz64); |
| 32 | config.rcc.pclk1 = Some(mhz(100)); | 32 | config.rcc.csi = true; |
| 33 | config.rcc.pclk2 = Some(mhz(100)); | 33 | config.rcc.pll_src = PllSource::Hsi; |
| 34 | config.rcc.pclk3 = Some(mhz(100)); | 34 | config.rcc.pll1 = Some(Pll { |
| 35 | config.rcc.pclk4 = Some(mhz(100)); | 35 | prediv: 4, |
| 36 | mul: 50, | ||
| 37 | divp: Some(2), | ||
| 38 | divq: Some(8), // 100mhz | ||
| 39 | divr: None, | ||
| 40 | }); | ||
| 41 | config.rcc.sys = Sysclk::Pll1P; // 400 Mhz | ||
| 42 | config.rcc.ahb_pre = AHBPrescaler::DIV2; // 200 Mhz | ||
| 43 | config.rcc.apb1_pre = APBPrescaler::DIV2; // 100 Mhz | ||
| 44 | config.rcc.apb2_pre = APBPrescaler::DIV2; // 100 Mhz | ||
| 45 | config.rcc.apb3_pre = APBPrescaler::DIV2; // 100 Mhz | ||
| 46 | config.rcc.apb4_pre = APBPrescaler::DIV2; // 100 Mhz | ||
| 47 | config.rcc.voltage_scale = VoltageScale::Scale1; | ||
| 48 | } | ||
| 36 | let p = embassy_stm32::init(config); | 49 | let p = embassy_stm32::init(config); |
| 37 | 50 | ||
| 38 | defmt::info!("Hello World!"); | 51 | defmt::info!("Hello World!"); |
| 39 | let mco = Mco::new(p.MCO1, p.PA8, Mco1Source::Hsi, McoClock::Divided(3)); | 52 | let mco = Mco::new(p.MCO1, p.PA8, Mco1Source::HSI, 3); |
| 40 | 53 | ||
| 41 | let mut led = Output::new(p.PE3, Level::High, Speed::Low); | 54 | let mut led = Output::new(p.PE3, Level::High, Speed::Low); |
| 42 | let cam_i2c = I2c::new( | 55 | let cam_i2c = I2c::new( |
