Crates.io | teensy4-panic |
lib.rs | teensy4-panic |
version | 0.2.3 |
source | src |
created_at | 2020-12-26 21:15:40.772109 |
updated_at | 2023-09-15 13:45:12.00525 |
description | Panic handler for the Teensy 4. Part of the teensy4-rs project. |
homepage | |
repository | https://github.com/mciantyre/teensy4-rs |
max_upload_size | |
id | 327627 |
size | 22,957 |
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
:
[dependencies]
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.
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()
:
[dependencies]
teensy4-panic = "0.2"
default-features = false
use teensy4_panic::sos;
#[panic_handler]
fn panic(_: &core::panic::PanicInfo) -> ! {
// Your panic handler here...
sos()
}
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