#cortex-m #arm #teensy-4 #panic-message

no-std teensy4-panic

Panic handler for the Teensy 4. Part of the teensy4-rs project

5 releases

0.2.3 Sep 15, 2023
0.2.2 Jan 6, 2023
0.2.1 Dec 19, 2021
0.2.0 Apr 24, 2021
0.1.0 Dec 26, 2020

#1032 in Embedded development

Download history 21/week @ 2023-12-18 22/week @ 2023-12-25 2/week @ 2024-01-01 72/week @ 2024-01-08 35/week @ 2024-01-15 12/week @ 2024-01-22 23/week @ 2024-01-29 22/week @ 2024-02-12 86/week @ 2024-02-19 116/week @ 2024-02-26 56/week @ 2024-03-04 80/week @ 2024-03-11 61/week @ 2024-03-18 4/week @ 2024-03-25 156/week @ 2024-04-01

307 downloads per month
Used in 3 crates


100 lines


Panic handler for the Teensy 4.

When you link teensy4-panic into your program, any panic!() will cause your Teensy's LED to blink S.O.S. in Morse code. Supports both Teensy 4.0 and 4.1 boards.


Depend on teensy4-panic:

teensy4-panic = "0.2"

Then, include the crate in your final program:

use teensy4_panic as _;

Finally, use panic!() to stop the program and blink the LED.


The table below summarizes this crate's features. Each subsection details the feature.

Feature Description Default feature?
panic-handler Define the Teensy 4's panic handler in this crate
log Log the panic message using log::error!

It does not make sense to disable panic-handler and enable log, since logging can only happen when panic-handler is enabled.

Custom panic handlers

By default, teensy4-panic enables the panic-handler feature. If you want to use the S.O.S. routine in your own panic handler, disable the default features, and call sos():

teensy4-panic = "0.2"
default-features = false
use teensy4_panic::sos;

fn panic(_: &core::panic::PanicInfo) -> ! {
    // Your panic handler here...

Log the panic message

If the log feature is enabled, the crate links with the log crate. Before blinking, the panic handler logs the panic message and source location at the error priority, using log::error!. The logging target is teensy4_panic.

The example below shows a panic! and an example of its corresponding log message:

const DELAY_MS: u32 = 5_000;
panic!("This is a panic message written after {}ms", DELAY_MS);
[ERROR teensy4_panic]: panicked at 'This is a panic message written after 5000ms', examples/panic_log.rs:22:5

The panic handler only emits the log message once. You're responsible for making sure that the log message can reach its destination while a panic! is active.

License: MIT OR Apache-2.0