This one is not included into cargo/examples directory because of
linker scripts and stuff.

Start with:
cargo generate --git https://github.com/rust-embedded/cortex-m-quickstart --name embrust-first
cd embrust-first

Edit src/main.rs with and follow the guide of cortex-m-quickstart:

#![no_std]
#![no_main]

extern crate panic_semihosting;

use cortex_m_semihosting::hprintln;

use bmp085;
use cortex_m_rt::entry;
use f3::hal::{delay::Delay, i2c::I2c, prelude::*, stm32f30x};

#[entry]
fn main() -> ! {
    let cp = cortex_m::Peripherals::take().unwrap();
    let dp = stm32f30x::Peripherals::take().unwrap();
    let mut flash = dp.FLASH.constrain();
    let mut rcc = dp.RCC.constrain();
    let clocks = rcc.cfgr.freeze(&mut flash.acr);
    let delay = Delay::new(cp.SYST, clocks);

    let mut gpiob = dp.GPIOB.split(&mut rcc.ahb);
    let scl = gpiob.pb6.into_af4(&mut gpiob.moder, &mut gpiob.afrl);
    let sda = gpiob.pb7.into_af4(&mut gpiob.moder, &mut gpiob.afrl);
    let i2c = I2c::i2c1(dp.I2C1, (scl, sda), 400.khz(), clocks, &mut rcc.apb1);

    let oss = bmp085::Oversampling::Standard;
    let mut bmp085 = bmp085::Bmp085::new(i2c, delay, oss).unwrap();

    //Temperature 246 d℃, pressure 92837 hPa

    let p = bmp085.read().unwrap();

    let temp = p.temperature as f32 / 10f32;
    let press = bmp085::pressure_to_normal_null(p.pressure, 691);
    hprintln!("Temperature {} , pressure {} hPa", temp, press).unwrap();

    loop {}
}
