stm32f4xx-hal 0.13.2

Peripheral access API for STM32F4 series microcontrollers
Documentation
[package]
edition = "2021"
rust-version = "1.60"

authors = ["Daniel Egger <daniel@eggers-club.de>"]
categories = [
    "embedded",
    "hardware-support",
    "no-std",
]
description = "Peripheral access API for STM32F4 series microcontrollers"
documentation = "https://docs.rs/stm32f4xx-hal"
keywords = [
    "arm",
    "cortex-m",
    "stm32f4xx",
    "hal",
]
license = "0BSD"
name = "stm32f4xx-hal"
readme = "README.md"
repository = "https://github.com/stm32-rs/stm32f4xx-hal"
version = "0.13.2"

[package.metadata.docs.rs]
features = ["stm32f429", "usb_fs", "can", "i2s", "fsmc_lcd"]
targets = ["thumbv7em-none-eabihf"]

[dependencies]
defmt = { version = "0.3.1", optional = true }
bxcan = { version = "0.6", optional = true }
cortex-m = "0.7.4"
cortex-m-rt = "0.7"
nb = "1"
rand_core = "0.6"
stm32f4 = "0.14.0"
synopsys-usb-otg = { version = "0.2.0", features = ["cortex-m"], optional = true }
sdio-host = { version = "0.6.0", optional = true }
embedded-dma = "0.2.0"
bare-metal = { version = "1" }
void = { default-features = false, version = "1.0.2" }
embedded-hal = { features = ["unproven"], version = "0.2.7" }
display-interface = { version = "0.4.1", optional = true }
fugit = "0.3.5"
fugit-timer = "0.1.3"
rtic-monotonic = { version = "1.0", optional = true }
bitflags = "1.3.2"
embedded-storage = "0.2"

[dependencies.time]
version = "0.3"
default-features = false

[dependencies.embedded-hal-one]
version = "=1.0.0-alpha.7"
package = "embedded-hal"

[dependencies.stm32_i2s_v12x]
version = "0.2.0"
optional = true

[dev-dependencies]
defmt-rtt = "0.3.2"
panic-semihosting = "0.5.3"
cortex-m-semihosting = "0.3.3"
heapless = "0.7.5"
panic-halt = "0.2.0"
ssd1306 = "0.7.0"
embedded-graphics = "0.7.1"
usb-device = "0.2.5"
usbd-serial = "0.1.0"
micromath = "2"
cortex-m-rtic = "1.0"
dwt-systick-monotonic = "1.0"
st7789 = "0.6.1"
panic-rtt-target = { version = "0.1.2", features = ["cortex-m"] }
rtt-target = { version = "0.3.1", features = ["cortex-m"] }
display-interface-spi = "0.4"
ist7920 = "0.1.0"
smart-leds = "0.3.0"
ws2812-spi = { version = "0.4.0", features = [] }
hd44780-driver = "0.4.0"

[dev-dependencies.time]
version = "0.3"
default-features = false
features = ["macros"]

[features]
device-selected = []
rt = [] # deprecated
# Note: stm32f4 has only one feature for some very similar device families,
# so it's intended for e.g. stm32f405/415 to both enable stm32f4/stm32f405.
stm32f401 = ["stm32f4/stm32f401", "device-selected", "gpio-f401",
    "i2c3",
    "otg-fs",
    "sdio",
    "spi3", "spi4",
    "tim2",
]
stm32f405 = ["stm32f4/stm32f405", "device-selected", "gpio-f417",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fsmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3",
    "tim2", "tim8",
    "usart3", "uart4", "uart5",
]
stm32f407 = ["stm32f4/stm32f407", "device-selected", "gpio-f417",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fsmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3",
    "tim2", "tim8",
    "usart3", "uart4", "uart5",
]
stm32f410 = ["stm32f4/stm32f410", "device-selected", "gpio-f410",
    "dac",
    "spi5",
]
stm32f411 = ["stm32f4/stm32f411", "device-selected", "gpio-f411",
    "i2c3",
    "otg-fs",
    "sdio",
    "tim2",
    "spi3", "spi4", "spi5",
]
stm32f412 = ["stm32f4/stm32f412", "device-selected", "gpio-f412",
    "can1", "can2",
    "fsmc",
    "i2c3",
    "otg-fs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5",
    "tim2", "tim8",
    "usart3",
]
stm32f413 = ["stm32f4/stm32f413", "device-selected", "gpio-f413",
    "can1", "can2", "can3",
    "dac",
    "fsmc",
    "fmpi2c1",
    "i2c3",
    "otg-fs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5",
    "tim2", "tim8",
    "usart3", "uart4", "uart5", "uart7", "uart8", "uart9", "uart10",
]
stm32f415 = ["stm32f4/stm32f405", "device-selected", "gpio-f417",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fsmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3",
    "tim2", "tim8",
    "usart3", "uart4", "uart5",
]
stm32f417 = ["stm32f4/stm32f407", "device-selected", "gpio-f417",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fsmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3",
    "tim2", "tim8",
    "usart3", "uart4", "uart5",
]
stm32f423 = ["stm32f4/stm32f413", "device-selected", "gpio-f413",
    "can1", "can2", "can3",
    "dac",
    "fsmc",
    "fmpi2c1",
    "i2c3",
    "otg-fs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5",
    "tim2", "tim8",
    "usart3", "uart4", "uart5", "uart7", "uart8", "uart9", "uart10",
]
stm32f427 = ["stm32f4/stm32f427", "device-selected", "gpio-f427",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fsmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5", "spi6",
    "tim2", "tim8",
    "usart3", "uart4", "uart5", "uart7", "uart8",
]
stm32f429 = ["stm32f4/stm32f429", "device-selected", "gpio-f427",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5", "spi6",
    "tim2", "tim8",
    "usart3", "uart4", "uart5", "uart7", "uart8",
]
stm32f437 = ["stm32f4/stm32f427", "device-selected", "gpio-f427",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fsmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5", "spi6",
    "tim2", "tim8",
    "usart3", "uart4", "uart5", "uart7", "uart8",
]
stm32f439 = ["stm32f4/stm32f429", "device-selected", "gpio-f427",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5", "spi6",
    "tim2", "tim8",
    "usart3", "uart4", "uart5", "uart7", "uart8",
]
stm32f446 = ["stm32f4/stm32f446", "device-selected", "gpio-f446",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "spi3", "spi4",
    "tim2", "tim8",
    "usart3", "uart4", "uart5",
]
stm32f469 = ["stm32f4/stm32f469", "device-selected", "gpio-f469",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5", "spi6",
    "tim2", "tim8",
    "usart3", "uart4", "uart5", "uart7", "uart8",
]
stm32f479 = ["stm32f4/stm32f469", "device-selected", "gpio-f469",
    "adc2", "adc3",
    "can1", "can2",
    "dac",
    "fmc",
    "i2c3",
    "otg-fs",
    "otg-hs",
    "rng",
    "sdio",
    "spi3", "spi4", "spi5", "spi6",
    "tim2", "tim8",
    "usart3", "uart4", "uart5", "uart7", "uart8",
]

gpio-f401 = ["gpiod", "gpioe"]
gpio-f410 = []
gpio-f411 = ["gpiod", "gpioe"] #, "gpioi"
gpio-f412 = ["gpiod", "gpioe", "gpiof", "gpiog"]
gpio-f413 = ["gpiod", "gpioe", "gpiof", "gpiog"]
gpio-f417 = ["gpiod", "gpioe", "gpiof", "gpiog", "gpioi"]
gpio-f427 = ["gpiod", "gpioe", "gpiof", "gpiog", "gpioi", "gpioj", "gpiok"]
gpio-f446 = ["gpiod", "gpioe", "gpiof", "gpiog"]
gpio-f469 = ["gpiod", "gpioe", "gpiof", "gpiog", "gpioi", "gpioj", "gpiok"]

usb_fs = ["synopsys-usb-otg", "synopsys-usb-otg/fs"]
usb_hs = ["synopsys-usb-otg", "synopsys-usb-otg/hs"]

can = ["bxcan"]

i2s = ["stm32_i2s_v12x"]

fsmc_lcd = ["display-interface"]

defmt = ["dep:defmt", "fugit/defmt"]

adc2 = []
adc3 = []
can1 = []
can2 = []
can3 = []
dac = []
fmc = []
fsmc = []
fmpi2c1 = []
gpiod = []
gpioe = []
gpiof = []
gpiog = []
gpioi = []
gpioj = []
gpiok = []
i2c3 = []
otg-fs = []
otg-hs = []
rng = []
sdio = []
spi3 = []
spi4 = []
spi5 = []
spi6 = []
tim2 = []
tim8 = []
usart3 = []
uart4 = []
uart5 = []
uart7 = []
uart8 = []
uart9 = []
uart10 = []

rtic = ["rtic-monotonic"]

[profile.dev]
debug = true
lto = true

[profile.release]
debug = true
lto = true
opt-level = "s"

[[example]]
name = "blinky-timer-irq"
required-features = ["tim2"] # stm32f411

[[example]]
name = "usb_serial"
required-features = ["otg-fs", "usb_fs"] # stm32f401

[[example]]
name = "sd"
required-features = ["gpiod", "sdio", "sdio-host"] # stm32f405

[[example]]
name = "delay-syst-blinky"
required-features = ["device-selected"] # stm32f411

[[example]]
name = "delay-timer-blinky"
required-features = ["device-selected"] # stm32f411

[[example]]
name = "dwt-blinky"
required-features = ["gpiog"] # "stm32f429"

[[example]]
name = "ssd1306-image"
required-features = ["device-selected"] # stm32f411

[[example]]
name = "stopwatch-with-ssd1306-and-interrupts"
required-features = ["tim2"] # stm32f411

[[example]]
name = "analog-stopwatch-with-spi-ssd1306"
required-features = ["spi4", "tim2", "gpioe", "gpiog"] # stm32f429

[[example]]
name = "rng-display"
required-features = ["rng"] # stm32f407

[[example]]
name = "qei"
required-features = ["tim2"] # stm32f411

[[example]]
name = "can-send"
required-features = ["can", "stm32f405"]

[[example]]
name = "i2s-audio-out"
required-features = ["stm32f411", "i2s"]

[[example]]
name = "i2s-audio-out-dma"
required-features = ["stm32f411", "i2s"]

[[example]]
name = "rtic"
required-features = ["gpiod", "rtic"] # stm32f407

[[example]]
name = "rtic-tick"
required-features = ["tim2", "rtic"]

[[example]]
name = "adc_dma_rtic"
required-features = ["device-selected", "rtic"] # stm32f401

[[example]]
name = "serial-9bit"
required-features = ["gpiod"] # stm32f411

[[example]]
name = "st7789-lcd"
required-features = ["fsmc", "fsmc_lcd"] # stm32f412

[[example]]
name = "f413disco_lcd_ferris"
required-features = ["gpiod", "gpioe", "gpiof", "gpiog", "fsmc", "fsmc_lcd"] # stm32f413

[[example]]
name= "pwm-input"
required-features = ["tim8"] # stm32f446

[[example]]
name= "pwm-sinus"
required-features = ["stm32f411"]

[[example]]
name = "ist7920_bidi_normal_spi"
required-features = ["device-selected"]

[[example]]
name = "spi_dma"
required-features = ["stm32f411"]

[[example]]
name = "dynamic_gpio"
required-features = ["device-selected"]

[[example]]
name = "rtc"
required-features = ["device-selected"]

[[example]]
name = "hd44780"
required-features = ["device-selected"]

[[example]]
name = "spi_slave_dma_rtic"
required-features = ["stm32f411", "rtic"]