aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32h7/src/bin/camera.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/stm32h7/src/bin/camera.rs')
-rw-r--r--examples/stm32h7/src/bin/camera.rs33
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;
6use embassy_stm32::dcmi::{self, *}; 6use embassy_stm32::dcmi::{self, *};
7use embassy_stm32::gpio::{Level, Output, Speed}; 7use embassy_stm32::gpio::{Level, Output, Speed};
8use embassy_stm32::i2c::I2c; 8use embassy_stm32::i2c::I2c;
9use embassy_stm32::rcc::{Mco, Mco1Source, McoClock}; 9use embassy_stm32::rcc::{Mco, Mco1Source};
10use embassy_stm32::time::{khz, mhz}; 10use embassy_stm32::time::khz;
11use embassy_stm32::{bind_interrupts, i2c, peripherals, Config}; 11use embassy_stm32::{bind_interrupts, i2c, peripherals, Config};
12use embassy_time::{Duration, Timer}; 12use embassy_time::{Duration, Timer};
13use ov7725::*; 13use ov7725::*;
@@ -26,17 +26,30 @@ bind_interrupts!(struct Irqs {
26#[embassy_executor::main] 26#[embassy_executor::main]
27async fn main(_spawner: Spawner) { 27async 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(