Module cortex_m_quickstart::examples::_4_register_interrupt_handler [] [src]

Register an interrupt handler

NOTE Requires a device crate generated using svd2rust

 
#![feature(used)]
#![no_std]
 
extern crate cortex_m;
extern crate cortex_m_rt;
// NOTE this is the device crate
extern crate stm32f30x;
 
use cortex_m::asm;
use stm32f30x::interrupt;
 
fn main() {}
 
// NOTE each interrupt handler has a different signature
extern "C" fn my_interrupt_handler(_ctxt: interrupt::Tim7) {
    asm::bkpt();
}
 
extern "C" fn another_interrupt_handler(_ctxt: interrupt::Exti0) {
    asm::bkpt();
}
 
// Here we override only two interrupt handlers, the rest of interrupt are
// handled by the same interrupt handler
#[allow(dead_code)]
#[used]
#[link_section = ".rodata.interrupts"]
static INTERRUPTS: interrupt::Handlers = interrupt::Handlers {
    Tim7: my_interrupt_handler,
    Exti0: another_interrupt_handler,
    ..interrupt::DEFAULT_HANDLERS
};