Module cortex_m_quickstart::examples::_2_itm
[−]
[src]
Sends "Hello, world!" through the ITM port 0
ITM is much faster than semihosting. Like 4 orders of magnitude or so.
NOTE Cortex-M0 chips don't support ITM.
You'll have to connect the microcontroller's SWO pin to the SWD interface. Note that some development boards don't provide this option.
You'll need itmdump
to receive the message on the host plus you'll need to uncomment two
monitor
commands in the .gdbinit
file.
#![no_main] #![no_std] #[macro_use] extern crate cortex_m; #[macro_use] extern crate cortex_m_rt as rt; extern crate panic_semihosting; use cortex_m::{asm, Peripherals}; use rt::ExceptionFrame; entry!(main); fn main() -> ! { let mut p = Peripherals::take().unwrap(); let stim = &mut p.ITM.stim[0]; iprintln!(stim, "Hello, world!"); loop { asm::bkpt(); } } // 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); }