Module cortex_m_quickstart::examples::_3_panic [] [src]

Changing the panic handler

The easiest way to change the panic handler is to use a different panic handler crate.



#![no_main]
#![no_std]

#[macro_use]
extern crate cortex_m_rt as rt;

// Pick one of these two panic handlers:

// Reports panic messages to the host stderr using semihosting
extern crate panic_semihosting;

// Logs panic messages using the ITM (Instrumentation Trace Macrocell)
// extern crate panic_itm;

use rt::ExceptionFrame;

entry!(main);

fn main() -> ! {
    panic!("Oops")
}

// define the hard fault handler
exception!(HardFault, hard_fault);

fn hard_fault(ef: &ExceptionFrame) -> ! {
    panic!("HardFault at {:#?}", ef);
}

// define the default exception handler
exception!(*, default_handler);

fn default_handler(irqn: i16) {
    panic!("Unhandled exception (IRQn = {})", irqn);
}