#![no_std]
#![no_main]
use panic_semihosting as _;
use cortex_m_rt::entry;
use stm32f3xx_hal::{dac::Dac, pac, prelude::*};
#[entry]
fn main() -> ! {
let dp = pac::Peripherals::take().unwrap();
let mut rcc = dp.RCC.constrain();
let mut gpioa = dp.GPIOA.split(&mut rcc.ahb);
let _dac1_out1 = gpioa.pa4.into_analog(&mut gpioa.moder, &mut gpioa.pupdr);
let mut ok_led = gpioa
.pa15
.into_push_pull_output(&mut gpioa.moder, &mut gpioa.otyper);
let mut dac1 = Dac::new(dp.DAC1, &mut rcc.apb1);
let mut led = true;
loop {
for value in (0..256).chain((0..255).rev()) {
dac1.write_data((4095 / 255) * value);
cortex_m::asm::delay(8_000);
}
if led {
ok_led.set_low().unwrap();
led = false;
} else {
ok_led.set_high().unwrap();
led = true;
}
}
}