Select Git revision
Forked from
Per Lindgren / e7020e_2020
54 commits behind the upstream repository.
-
Per Lindgren authoredPer Lindgren authored
device.rs 1.10 KiB
//! Using a device crate
//!
#![no_main]
#![no_std]
#[allow(unused_extern_crates)]
extern crate panic_halt;
use cortex_m::{iprint, peripheral::syst::SystClkSource};
use cortex_m_rt::entry;
use cortex_m_semihosting::hprintln;
// `svd2rust` generated Peripheral Access Crate (PAC).
use stm32f4::stm32f401::{interrupt, Interrupt, ITM, NVIC};
#[entry]
fn main() -> ! {
let p = cortex_m::Peripherals::take().unwrap();
let mut syst = p.SYST;
let mut nvic = p.NVIC;
nvic.enable(Interrupt::EXTI0);
// configure the system timer to wrap around every second
syst.set_clock_source(SystClkSource::Core);
syst.set_reload(16_000_000); // 1s
syst.enable_counter();
loop {
// busy wait until the timer wraps around
while !syst.has_wrapped() {}
// trigger the `EXTI0` interrupt
NVIC::pend(Interrupt::EXTI0);
}
}
// try commenting out this line: you'll end in `default_handler` instead of in `exti0`
#[interrupt]
fn EXTI0() {
hprintln!(".").unwrap();
let itm = unsafe { &mut *ITM::ptr() };
let stim = &mut itm.stim[0];
iprint!(stim, ".");
}