Module cortex_m_quickstart::examples::_5_device
[−]
[src]
Using a device crate
Crates generated using svd2rust are referred to as device crates. These
crates provides an API to access the peripherals of a device. When you
depend on one of these crates and the "rt" feature is enabled you don't need
link to the cortex-m-rt crate.
Device crates also provide an interrupt! macro to register interrupt
handlers.
This example depends on the stm32f103xx crate so you'll have to add it
to your Cargo.toml.
$ edit Cargo.toml && cat $_ [dependencies.stm32f103xx] features = ["rt"] version = "0.7.0"
#![no_std] extern crate cortex_m; #[macro_use(exception, interrupt)] extern crate stm32f103xx; use cortex_m::interrupt; fn main() { interrupt::free(|cs| { let _gpioa = stm32f103xx::GPIOA.borrow(cs); // do something with GPIOA }); } exception!(SYS_TICK, tick, locals: { ticks: u32 = 0; }); fn tick(l: &mut SYS_TICK::Locals) { l.ticks += 1; // .. } interrupt!(TIM2, tock, locals: { tocks: u32 = 0; }); fn tock(l: &mut TIM2::Locals) { l.tocks += 1; // .. }