[package]
edition = "2024"
rust-version = "1.95.0"
name = "esp-hal"
version = "1.2.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
chip-features-matter = true
[package.metadata.espressif.doc-config]
features = [
"unstable",
"rt",
]
[[package.metadata.espressif.doc-config.append]]
if = "usb_otg_driver_supported"
features = ["__usb_otg"]
[[package.metadata.espressif.doc-config.append]]
if = "bt_driver_supported"
features = ["__bluetooth"]
[[package.metadata.espressif.doc-config.append]]
if = "sdmmc_driver_supported"
features = ["__sdmmc"]
[[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",
]
[package.metadata.espressif.check-configs.env]
ESP_HAL_CONFIG_PLACE_ANON_IN_RAM = "true"
ESP_HAL_CONFIG_PLACE_RMT_DRIVER_IN_RAM = "true"
ESP_HAL_CONFIG_PLACE_SPI_MASTER_DRIVER_IN_RAM = "true"
ESP_HAL_CONFIG_CLEAR_CRYPTO_SECRETS = "false"
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
]
if = "riscv && !esp32c2 && !esp32c3"
[package.metadata.espressif.check-configs.env]
ESP_HAL_CONFIG_ENABLE_PMP = "false"
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
]
[package.metadata.espressif.check-configs.env]
ESP_HAL_CONFIG_INIT_STACK_PTR_RANGE_CHECK = "false"
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
]
if = "soc_has_clock_node_xtal32k_clk"
[package.metadata.espressif.check-configs.env]
ESP_HAL_CONFIG_USE_XTAL32K = "true"
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
"__usb_otg",
]
if = "usb_otg_driver_supported"
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
"__bluetooth",
]
if = "bt_driver_supported"
[[package.metadata.espressif.check-configs]]
features = [
"unstable",
"rt",
"__sdmmc",
]
if = "sdmmc_driver_supported"
[[package.metadata.espressif.clippy-configs]]
features = [
"unstable",
"rt",
]
[[package.metadata.espressif.clippy-configs.append]]
if = "usb_otg_driver_supported"
features = ["__usb_otg"]
[[package.metadata.espressif.clippy-configs.append]]
if = "bt_driver_supported"
features = ["__bluetooth"]
[[package.metadata.espressif.clippy-configs.append]]
if = "sdmmc_driver_supported"
features = ["__sdmmc"]
[package.metadata.docs.rs]
default-target = "riscv32imac-unknown-none-elf"
features = [
"esp32c6",
"unstable",
]
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
__bluetooth = []
__sdmmc = ["dep:sdio"]
__usb_otg = [
"dep:embassy-usb-driver",
"dep:embassy-usb-synopsys-otg",
]
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",
"__sdmmc",
"procmacros/rtc-slow",
"procmacros/rtc-fast",
"esp-rom-sys/esp32",
"esp-sync/esp32",
"esp-metadata-generated/esp32",
"dep:sha1",
"dep:sha2",
"dep:embassy-net-driver-02",
]
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",
]
esp32p4 = [
"dep:esp32p4",
"__sdmmc",
"__usb_otg",
"esp-riscv-rt/rtc-ram",
"esp-riscv-rt/clic-48",
"procmacros/rtc-fast",
"procmacros/has-lp-core",
"esp-rom-sys/esp32p4",
"esp-sync/esp32p4",
"esp-metadata-generated/esp32p4",
"dep:embassy-net-driver-02",
]
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",
"__sdmmc",
"procmacros/has-ulp-core",
"procmacros/rtc-slow",
"procmacros/rtc-fast",
"procmacros/dcache-reclaimed",
"__usb_otg",
"esp-rom-sys/esp32s3",
"esp-sync/esp32s3",
"esp-metadata-generated/esp32s3",
]
esp32s31 = [
"__sdmmc",
"dep:esp32s31",
"esp-riscv-rt/rtc-ram",
"esp-riscv-rt/clic-48",
"procmacros/rtc-fast",
"__usb_otg",
"esp-rom-sys/esp32s31",
"esp-sync/esp32s31",
"esp-metadata-generated/esp32s31",
]
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",
"esp32c5?/rt",
"esp32c6?/rt",
"esp32c61?/rt",
"esp32p4?/rt",
"esp32h2?/rt",
"esp32s2?/rt",
"esp32s3?/rt",
"esp32s31?/rt",
"critical-section",
]
unstable = [
"dep:digest-010",
"dep:digest-011",
"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.bytemuck]
version = "1.24"
[dependencies.critical-section]
version = "1"
features = ["restore-state-u32"]
optional = true
[dependencies.defmt]
version = "1.1"
optional = true
[dependencies.delegate]
version = "0.13"
[dependencies.digest-010]
version = "0.10.7"
features = ["core-api"]
optional = true
default-features = false
package = "digest"
[dependencies.digest-011]
version = "0.11"
features = ["block-api"]
optional = true
default-features = false
package = "digest"
[dependencies.document-features]
version = "0.2"
[dependencies.embassy-embedded-hal]
version = "0.6"
optional = true
[dependencies.embassy-futures]
version = "0.1"
[dependencies.embassy-net-driver-02]
version = "0.2"
optional = true
package = "embassy-net-driver"
[dependencies.embassy-sync]
version = "0.8"
[dependencies.embassy-usb-driver]
version = "0.2"
optional = true
[dependencies.embassy-usb-synopsys-otg]
version = "0.4.0"
features = ["host"]
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.8.0"
[dependencies.esp-metadata-generated]
version = "0.5.1"
[dependencies.esp-rom-sys]
version = "~0.1"
[dependencies.esp-sync]
version = "0.3.0"
[dependencies.esp32]
version = "0.41"
features = ["critical-section"]
optional = true
[dependencies.esp32c2]
version = "0.30"
features = ["critical-section"]
optional = true
[dependencies.esp32c3]
version = "0.33"
features = ["critical-section"]
optional = true
[dependencies.esp32c5]
version = "0.3"
features = ["critical-section"]
optional = true
[dependencies.esp32c6]
version = "0.24"
features = ["critical-section"]
optional = true
[dependencies.esp32c61]
version = "0.4"
features = ["critical-section"]
optional = true
[dependencies.esp32h2]
version = "0.20"
features = ["critical-section"]
optional = true
[dependencies.esp32p4]
version = "0.3"
features = ["critical-section"]
optional = true
[dependencies.esp32s2]
version = "0.32"
features = ["critical-section"]
optional = true
[dependencies.esp32s3]
version = "0.36"
features = ["critical-section"]
optional = true
[dependencies.esp32s31]
version = "0.2"
features = ["critical-section"]
optional = true
[dependencies.fugit]
version = "0.5.0"
[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.23.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.sdio]
version = "0.5"
optional = true
[dependencies.sha1]
version = "0.11"
optional = true
default-features = false
[dependencies.sha2]
version = "0.11"
optional = true
default-features = false
[dependencies.static_cell]
version = "2"
[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.7.5"
default-features = false
[dev-dependencies.jiff]
version = "0.2"
features = ["static"]
default-features = false
[build-dependencies.esp-config]
version = "0.8.0"
features = ["build"]
[build-dependencies.esp-metadata-generated]
version = "0.5.1"
features = ["build-script"]
[build-dependencies.somni-template]
version = "0.3.1"
[target.'cfg(target_arch = "riscv32")'.dependencies.esp-riscv-rt]
version = "0.15.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.23.0"
optional = true
[lints.clippy]
mixed_attributes_style = "allow"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ['cfg(host_os, values("windows"))']