stm32l0xx-hal 0.3.0

Peripheral access API for STM32L0 series microcontrollers
#![deny(unsafe_code)]
#![no_main]
#![no_std]


extern crate panic_halt;


use cortex_m_rt::entry;
use stm32l0xx_hal::{
    prelude::*,
    pac,
    rcc::Config,
};


#[entry]
fn main() -> ! {
    let dp = pac::Peripherals::take().unwrap();

    let mut rcc   = dp.RCC.freeze(Config::hsi16());
    let mut adc   = dp.ADC.constrain(&mut rcc);
    let     gpioa = dp.GPIOA.split(&mut rcc);
    let     gpiob = dp.GPIOB.split(&mut rcc);

    let mut a0 = gpioa.pa0.into_analog();

    let mut blue = gpiob.pb6.into_push_pull_output();
    let mut red  = gpiob.pb7.into_push_pull_output();

    loop {
        let val: u16 = adc.read(&mut a0).unwrap();

        if val > 2000 {
            blue.set_high().unwrap();
            red.set_low().unwrap();
        }
        else {
            red.set_high().unwrap();
            blue.set_low().unwrap();
        }
    }
}