[package]
edition = "2024"
rust-version = "1.88.0"
name = "esp-hal"
version = "1.1.0"
build = "build.rs"
exclude = [
"api-baseline",
"MIGRATING-*",
"CHANGELOG.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Bare-metal HAL for Espressif devices"
documentation = "https://docs.espressif.com/projects/rust/esp-hal/latest/"
readme = "README.md"
keywords = [
"embedded",
"embedded-hal",
"esp32",
"espressif",
"hal",
]
categories = [
"embedded",
"hardware-support",
"no-std",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/esp-rs/esp-hal"
[package.metadata.espressif]
semver-checked = true
[package.metadata.espressif.doc-config]
features = [
"unstable",
"rt",
]
[[package.metadata.espressif.doc-config.append]]
if = 'chip_has("usb_otg_driver_supported")'
features = ["__usb_otg"]
[[package.metadata.espressif.doc-config.append]]
if = 'chip_has("bt_driver_supported")'
features = ["__bluetooth"]
[[package.metadata.espressif.check-configs]]
features = []
[[package.metadata.espressif.check-configs]]
features = ["rt"]
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
]
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
"__usb_otg",
]
if = 'chip_has("usb_otg_driver_supported")'
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
"__bluetooth",
]
if = 'chip_has("bt_driver_supported")'
[[package.metadata.espressif.clippy-configs]]
features = [
"unstable",
"rt",
]
[[package.metadata.espressif.clippy-configs.append]]
if = 'chip_has("usb_otg_driver_supported")'
features = ["__usb_otg"]
[[package.metadata.espressif.clippy-configs.append]]
if = 'chip_has("bt_driver_supported")'
features = ["__bluetooth"]
[package.metadata.docs.rs]
default-target = "riscv32imac-unknown-none-elf"
features = [
"esp32c6",
"unstable",
]
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
__bluetooth = []
__usb_otg = [
"dep:embassy-usb-driver",
"dep:embassy-usb-synopsys-otg",
"dep:esp-synopsys-usb-otg",
"esp-synopsys-usb-otg/esp32sx",
"esp-synopsys-usb-otg/fs",
]
default = [
"rt",
"exception-handler",
"float-save-restore",
]
defmt = [
"dep:defmt",
"embassy-futures/defmt",
"embassy-sync/defmt",
"embedded-io-06?/defmt-03",
"embedded-io-async-06?/defmt-03",
"embedded-io-07?/defmt",
"embedded-io-async-07?/defmt",
"enumset/defmt",
"esp32?/defmt",
"esp32c2?/defmt",
"esp32c3?/defmt",
"esp32c5?/defmt",
"esp32c6?/defmt",
"esp32c61?/defmt",
"esp32h2?/defmt",
"esp32s2?/defmt",
"esp32s3?/defmt",
"fugit/defmt",
"esp-riscv-rt?/defmt",
"xtensa-lx-rt?/defmt",
"esp-sync/defmt",
]
esp32 = [
"dep:esp32",
"procmacros/rtc-slow",
"procmacros/rtc-fast",
"esp-rom-sys/esp32",
"esp-sync/esp32",
"esp-metadata-generated/esp32",
"dep:sha1",
"dep:sha2",
]
esp32c2 = [
"dep:esp32c2",
"esp-riscv-rt/no-mie-mip",
"portable-atomic/unsafe-assume-single-core",
"esp-rom-sys/esp32c2",
"esp-sync/esp32c2",
"esp-metadata-generated/esp32c2",
]
esp32c3 = [
"dep:esp32c3",
"esp-riscv-rt/no-mie-mip",
"esp-riscv-rt/rtc-ram",
"procmacros/rtc-fast",
"portable-atomic/unsafe-assume-single-core",
"esp-rom-sys/esp32c3",
"esp-sync/esp32c3",
"esp-metadata-generated/esp32c3",
]
esp32c5 = [
"dep:esp32c5",
"esp-riscv-rt/rtc-ram",
"esp-riscv-rt/clic-48",
"procmacros/rtc-fast",
"procmacros/has-lp-core",
"esp-rom-sys/esp32c5",
"esp-sync/esp32c5",
"esp-metadata-generated/esp32c5",
]
esp32c6 = [
"dep:esp32c6",
"esp-riscv-rt/rtc-ram",
"procmacros/rtc-fast",
"procmacros/has-lp-core",
"esp-rom-sys/esp32c6",
"esp-sync/esp32c6",
"esp-metadata-generated/esp32c6",
]
esp32c61 = [
"dep:esp32c61",
"esp-riscv-rt/clic-48",
"procmacros/has-lp-core",
"esp-rom-sys/esp32c61",
"esp-sync/esp32c61",
"esp-metadata-generated/esp32c61",
]
esp32h2 = [
"dep:esp32h2",
"esp-riscv-rt/rtc-ram",
"procmacros/rtc-fast",
"esp-rom-sys/esp32h2",
"esp-sync/esp32h2",
"esp-metadata-generated/esp32h2",
]
esp32s2 = [
"dep:esp32s2",
"portable-atomic/unsafe-assume-single-core",
"procmacros/has-ulp-core",
"procmacros/rtc-slow",
"procmacros/rtc-fast",
"__usb_otg",
"esp-rom-sys/esp32s2",
"esp-sync/esp32s2",
"esp-metadata-generated/esp32s2",
]
esp32s3 = [
"dep:esp32s3",
"procmacros/has-ulp-core",
"procmacros/rtc-slow",
"procmacros/rtc-fast",
"__usb_otg",
"esp-rom-sys/esp32s3",
"esp-sync/esp32s3",
"esp-metadata-generated/esp32s3",
]
exception-handler = []
float-save-restore = ["xtensa-lx-rt/float-save-restore"]
log-04 = ["dep:log-04"]
requires-unstable = []
rt = [
"dep:xtensa-lx-rt",
"dep:esp-riscv-rt",
"esp32?/rt",
"esp32c2?/rt",
"esp32c3?/rt",
"esp32c6?/rt",
"esp32h2?/rt",
"esp32s2?/rt",
"esp32s3?/rt",
"critical-section",
]
unstable = [
"dep:digest",
"dep:embassy-embedded-hal",
"dep:embedded-can",
"dep:embedded-io-06",
"dep:embedded-io-async-06",
"dep:embedded-io-07",
"dep:embedded-io-async-07",
"dep:rand_core-06",
"dep:rand_core-09",
"dep:rand_core-010",
"dep:nb",
"dep:ufmt-write",
]
[lib]
name = "esp_hal"
path = "src/lib.rs"
test = false
bench = false
[dependencies.bitfield]
version = "0.19"
[dependencies.bitflags]
version = "2.9"
[dependencies.bytemuck]
version = "1.24"
[dependencies.cfg-if]
version = "1"
[dependencies.critical-section]
version = "1"
features = ["restore-state-u32"]
optional = true
[dependencies.defmt]
version = "1.0.1"
optional = true
[dependencies.delegate]
version = "0.13"
[dependencies.digest]
version = "0.10.7"
features = ["core-api"]
optional = true
default-features = false
[dependencies.document-features]
version = "0.2"
[dependencies.embassy-embedded-hal]
version = "0.6"
optional = true
[dependencies.embassy-futures]
version = "0.1"
[dependencies.embassy-sync]
version = "0.8"
[dependencies.embassy-usb-driver]
version = "0.2"
optional = true
[dependencies.embassy-usb-synopsys-otg]
version = "0.3"
optional = true
[dependencies.embedded-can]
version = "0.4.1"
optional = true
[dependencies.embedded-hal]
version = "1.0.0"
[dependencies.embedded-hal-async]
version = "1.0.0"
[dependencies.embedded-io-06]
version = "0.6"
optional = true
package = "embedded-io"
[dependencies.embedded-io-07]
version = "0.7"
optional = true
package = "embedded-io"
[dependencies.embedded-io-async-06]
version = "0.6"
optional = true
package = "embedded-io-async"
[dependencies.embedded-io-async-07]
version = "0.7"
optional = true
package = "embedded-io-async"
[dependencies.enumset]
version = "1.1"
[dependencies.esp-config]
version = "0.7.0"
[dependencies.esp-metadata-generated]
version = "0.4.0"
[dependencies.esp-rom-sys]
version = "~0.1"
[dependencies.esp-sync]
version = "0.2.1"
[dependencies.esp-synopsys-usb-otg]
version = "0.4.2"
optional = true
[dependencies.esp32]
version = "0.40"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.esp32c2]
version = "0.29"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.esp32c3]
version = "0.32"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.esp32c5]
version = "0.2"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.esp32c6]
version = "0.23"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.esp32c61]
version = "0.3"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.esp32h2]
version = "0.19"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.esp32s2]
version = "0.31"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.esp32s3]
version = "0.35"
features = [
"critical-section",
"rt",
]
optional = true
[dependencies.fugit]
version = "0.3.7"
[dependencies.instability]
version = "0.3.12"
[dependencies.log-04]
version = "0.4"
optional = true
package = "log"
[dependencies.nb]
version = "1.1"
optional = true
[dependencies.paste]
version = "1.0.15"
[dependencies.portable-atomic]
version = "1.11"
default-features = false
[dependencies.procmacros]
version = "0.22.0"
package = "esp-hal-procmacros"
[dependencies.rand_core-010]
version = "0.10"
optional = true
package = "rand_core"
[dependencies.rand_core-06]
version = "0.6"
optional = true
package = "rand_core"
[dependencies.rand_core-09]
version = "0.9"
optional = true
package = "rand_core"
[dependencies.sha1]
version = "0.10"
optional = true
default-features = false
[dependencies.sha2]
version = "0.10"
optional = true
default-features = false
[dependencies.strum]
version = "0.27.1"
features = ["derive"]
default-features = false
[dependencies.ufmt-write]
version = "0.1"
optional = true
[dev-dependencies.crypto-bigint]
version = "0.5.5"
default-features = false
[dev-dependencies.jiff]
version = "0.2"
features = ["static"]
default-features = false
[build-dependencies.esp-config]
version = "0.7.0"
features = ["build"]
[build-dependencies.esp-metadata-generated]
version = "0.4.0"
features = ["build-script"]
[target.'cfg(target_arch = "riscv32")'.dependencies.esp-riscv-rt]
version = "0.14.0"
optional = true
[target.'cfg(target_arch = "riscv32")'.dependencies.riscv]
version = "0.15.0"
[target.'cfg(target_arch = "xtensa")'.dependencies.xtensa-lx]
version = "0.13.0"
[target.'cfg(target_arch = "xtensa")'.dependencies.xtensa-lx-rt]
version = "0.22.0"
optional = true
[lints.clippy]
mixed_attributes_style = "allow"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ['cfg(host_os, values("windows"))']