teensy4-bsp 0.3.0

Rust-based BSP for the Teensy 4. Part of the teensy4-rs project.
Documentation
[package]
name = "teensy4-bsp"
version = "0.3.0"
authors = ["Ian McIntyre <ianpmcintyre@gmail.com>"]
edition = "2018"
license = "MIT OR Apache-2.0"
repository = "https://github.com/mciantyre/teensy4-rs"
description = """
Rust-based BSP for the Teensy 4.
Part of the teensy4-rs project.
"""
include = [
    "bin/**/*.h",
    "bin/**/*.c",
    "bin/**/*.s",
    "bin/libt4start.a",
    "bin/libt4usb.a",
    "bin/Makefile",
    "examples/*",
    "src/*",
    "build.rs",
    "t4link.x",
    "README.md",
    "LICENSE-*"
]
categories = [
    "embedded",
    "hardware-support",
    "no-std",
]
keywords = [
    "arm",
    "cortex-m",
    "teensy4",
]

[dependencies]
cortex-m = "0.7"

[dependencies.cortex-m-rt]
version = "0.7"
optional = true
features = ["device"]

[target.thumbv7em-none-eabihf.dependencies.teensy4-fcb]
path = "teensy4-fcb"
version = "0.3"

[dependencies.imxrt-hal]
version = "0.4.2"
features = ["imxrt1062"]

[dependencies.teensy4-pins]
version = "0.2"
path = "teensy4-pins"

# Only need logging when "usb-logging" is enabled
[dependencies.log]
version = "0.4.8"
optional = true

[workspace]
members = [
    "teensy4-fcb",
    "teensy4-panic",
    "teensy4-pins",
    "tools",
]

[features]
# Default features established for prototype development
default = ["usb-logging"]
# Enables the USB logging stack
usb-logging = ["log"]
# Provides the `Peripherals::steal` constructor required by `rtic`.
rtic = ["imxrt-hal/rtic"]
# Enables cortex-m-rt runtime support
rt = ["cortex-m-rt", "imxrt-hal/rt"]

# Most teensy4-rs documentation tells the user to favor release builds.
# However, it might be nice to disable optimizations when evaluating
# programs. These settings let us remove '--release' from documented
# commands and still have a successful build.
[profile.dev]
lto = "thin"

# Don't optimize build dependencies, like proc macros.
# Helps with build times.
[profile.release.build-override]
opt-level = 0

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
default-target = "thumbv7em-none-eabihf"

##########
# EXAMPLES
##########

# Examples that just need a runtime

[[example]]
name = "configure_pin_function"
required-features = ["rt"]

[[example]]
name = "gpt"
required-features = ["rt"]

[[example]]
name = "led"
required-features = ["rt"]

[[example]]
name = "pit"
required-features = ["rt"]

[[example]]
name = "panic"
required-features = ["rt"]

[[example]]
name = "pull_down_pin"
required-features = ["rt"]

# Examples that require USB logging.

[[example]]
name = "dma_memcpy"
required-features = ["rt", "usb-logging"]

[[example]]
name = "dma_spi"
required-features = ["rt", "usb-logging"]

[[example]]
name = "dma_uart"
required-features = ["rt", "usb-logging"]

[[example]]
name = "i2c"
required-features = ["rt", "usb-logging"]

[[example]]
name = "panic_log"
required-features = ["rt", "usb-logging", "teensy4-panic/log"]

[[example]]
name = "pwm"
required-features = ["rt", "usb-logging"]

[[example]]
name = "spi"
required-features = ["rt", "usb-logging"]

[[example]]
name = "srtc"
required-features = ["rt", "usb-logging"]

[[example]]
name = "timer"
required-features = ["rt", "usb-logging"]

[[example]]
name = "uart"
required-features = ["rt", "usb-logging"]

[[example]]
name = "usb"
required-features = ["rt", "usb-logging"]

[[example]]
name = "usb_writer"
required-features = ["rt", "usb-logging"]

# ----
# RTIC
# ----

[[example]]
name = "rtic_led"
required-features = ["rt", "rtic"]

[[example]]
name = "rtic_blink"
required-features = ["rt", "rtic"]

[[example]]
name = "rtic_pit"
required-features = ["rt", "rtic"]

[[example]]
name = "rtic_uart_log"
required-features = ["rt", "rtic"]

[[example]]
name = "rtic_dma_uart_log"
required-features = ["rt", "rtic"]

[[example]]
name = "rtic_gpio_interrupt"
required-features = ["rt", "rtic"]

[[example]]
name = "rtic_usb_echo"
required-features = ["rt", "rtic", "usb-logging"]

[[example]]
name = "rtic_usb"
required-features = ["rt", "rtic", "usb-logging"]

# -------------------------
# Dependencies for examples
# -------------------------

[dev-dependencies]
cortex-m-rtic = "1.0"
dwt-systick-monotonic = "1.0"
embedded-hal = "0.2"
heapless = "0.5"
imxrt-uart-log = "0.2"
log = "0.4"
nb = "0.1"

[dev-dependencies.teensy4-panic]
version = "0.2"
path = "teensy4-panic"
features = ["log"]

[patch.crates-io.cortex-m]
git = "https://github.com/mciantyre/cortex-m"
branch = "master"