//! Nesting claims and how the preemption threshold works
//!
//! If you run this program you'll hit the breakpoints as indicated by the
//! letters in the comments: A, then B, then C, etc.
#![deny(unsafe_code)]
#![feature(proc_macro)]
#![no_std]

extern crate cortex_m;
extern crate cortex_m_rtfm as rtfm;
extern crate stm32f40x;

#[macro_use]
extern crate cortex_m_debug;

use rtfm::app;

app! {
    device: stm32f40x,
}

fn init(_p: init::Peripherals) {
    let mut sum = 0;
    for i in 0..10 {
        ipln!("i = {}", i);
        sum += i;
    }
    ipln!("Sum 0..10 = {}", sum);
}

#[inline(never)]
fn idle() -> ! {
    loop {
        rtfm::wfi();
    }
}