#![deny(unsafe_code)]
#![no_std]
#![no_main]
use panic_halt as _;
use stm32f1xx_hal::{pac, prelude::*, rtc::Rtc};
use cortex_m_rt::entry;
use nb::block;
#[entry]
fn main() -> ! {
let dp = pac::Peripherals::take().unwrap();
let mut pwr = dp.PWR;
let rcc = dp.RCC.constrain();
let mut gpioc = dp.GPIOC.split();
let mut led = gpioc.pc13.into_push_pull_output(&mut gpioc.crh);
let mut backup_domain = rcc.bkp.constrain(dp.BKP, &mut pwr);
let mut rtc = Rtc::new(dp.RTC, &mut backup_domain);
let mut led_on = false;
loop {
rtc.set_time(0);
rtc.set_alarm(5);
block!(rtc.wait_alarm()).unwrap();
if led_on {
led.set_low();
led_on = false;
} else {
led.set_high();
led_on = true;
}
}
}