diff --git a/Cargo.toml b/Cargo.toml index bd54e4d3..6b672752 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,28 +51,203 @@ usbd-serial = "0.1.0" # Miscellaneaous features rt = ["stm32l0/rt"] disable-linker-script = [] -# MCUs + +# STM32L0 subfamilies +# (Warning: Some peripherals, e.g. GPIO, don't follow this subfamily grouping.) stm32l0x1 = ["stm32l0/stm32l0x1"] stm32l0x2 = ["stm32l0/stm32l0x2"] stm32l0x3 = ["stm32l0/stm32l0x3"] + +# Legacy features (don't use those anymore) stm32l052 = ["stm32l0x2"] -stm32l053 = ["stm32l0x3"] -stm32l062 = ["stm32l0x2"] stm32l072 = ["stm32l0x2"] stm32l082 = ["stm32l0x2"] -# Chip packages -lqfp32 = [] -lqfp48 = [] -lqfp64 = [] -lqfp100 = [] -tfbga64 = [] -ufbga64 = [] -ufbg100 = [] + +# Features based on the GPIO peripheral version. +# This determines the pin function mapping of the MCU. +io-STM32L021 = [] +io-STM32L031 = [] +io-STM32L051 = [] +io-STM32L071 = [] + +# Physical packages +ewlcsp49 = [] +lqfp32 = [] +lqfp48 = [] +lqfp64 = [] +lqfp100 = [] +tfbga64 = [] +tssop14 = [] +tssop20 = [] +ufbga64 = [] +ufbga100 = [] +ufqfpn20 = [] +ufqfpn28 = [] ufqfpn32 = [] ufqfpn48 = [] -wlcsp36 = [] -wlcsp49 = [] +wlcsp25 = [] +wlcsp36 = [] +wlcsp49 = [] +# MCUs +mcu-STM32L010C6Tx = ["io-STM32L031", "lqfp48"] +mcu-STM32L010F4Px = ["io-STM32L021", "tssop20"] +mcu-STM32L010K4Tx = ["io-STM32L021", "lqfp32"] +mcu-STM32L010K8Tx = ["io-STM32L051", "lqfp32"] +mcu-STM32L010R8Tx = ["io-STM32L051", "lqfp64"] +mcu-STM32L010RBTx = ["io-STM32L071", "lqfp64"] +mcu-STM32L011D3Px = ["io-STM32L021", "stm32l0x1", "tssop14"] +mcu-STM32L011D4Px = ["io-STM32L021", "stm32l0x1", "tssop14"] +mcu-STM32L011E3Yx = ["io-STM32L021", "stm32l0x1", "wlcsp25"] +mcu-STM32L011E4Yx = ["io-STM32L021", "stm32l0x1", "wlcsp25"] +mcu-STM32L011F3Px = ["io-STM32L021", "stm32l0x1", "tssop20"] +mcu-STM32L011F3Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn20"] +mcu-STM32L011F4Px = ["io-STM32L021", "stm32l0x1", "tssop20"] +mcu-STM32L011F4Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn20"] +mcu-STM32L011G3Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn28"] +mcu-STM32L011G4Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn28"] +mcu-STM32L011K3Tx = ["io-STM32L021", "stm32l0x1", "lqfp32"] +mcu-STM32L011K3Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn32"] +mcu-STM32L011K4Tx = ["io-STM32L021", "stm32l0x1", "lqfp32"] +mcu-STM32L011K4Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn32"] +mcu-STM32L021D4Px = ["io-STM32L021", "stm32l0x1", "tssop14"] +mcu-STM32L021F4Px = ["io-STM32L021", "stm32l0x1", "tssop20"] +mcu-STM32L021F4Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn20"] +mcu-STM32L021G4Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn28"] +mcu-STM32L021K4Tx = ["io-STM32L021", "stm32l0x1", "lqfp32"] +mcu-STM32L021K4Ux = ["io-STM32L021", "stm32l0x1", "ufqfpn32"] +mcu-STM32L031C4Tx = ["io-STM32L031", "stm32l0x1", "lqfp48"] +mcu-STM32L031C6Tx = ["io-STM32L031", "stm32l0x1", "lqfp48"] +mcu-STM32L031C6Ux = ["io-STM32L031", "stm32l0x1", "ufqfpn48"] +mcu-STM32L031E4Yx = ["io-STM32L031", "stm32l0x1", "wlcsp25"] +mcu-STM32L031E6Yx = ["io-STM32L031", "stm32l0x1", "wlcsp25"] +mcu-STM32L031F4Px = ["io-STM32L031", "stm32l0x1", "tssop20"] +mcu-STM32L031F6Px = ["io-STM32L031", "stm32l0x1", "tssop20"] +mcu-STM32L031G4Ux = ["io-STM32L031", "stm32l0x1", "ufqfpn28"] +mcu-STM32L031G6Ux = ["io-STM32L031", "stm32l0x1", "ufqfpn28"] +mcu-STM32L031G6UxS = ["io-STM32L031", "stm32l0x1", "ufqfpn28"] +mcu-STM32L031K4Tx = ["io-STM32L031", "stm32l0x1", "lqfp32"] +mcu-STM32L031K4Ux = ["io-STM32L031", "stm32l0x1", "ufqfpn32"] +mcu-STM32L031K6Tx = ["io-STM32L031", "stm32l0x1", "lqfp32"] +mcu-STM32L031K6Ux = ["io-STM32L031", "stm32l0x1", "ufqfpn32"] +mcu-STM32L041C4Tx = ["io-STM32L031", "stm32l0x1", "lqfp48"] +mcu-STM32L041C6Tx = ["io-STM32L031", "stm32l0x1", "lqfp48"] +mcu-STM32L041E6Yx = ["io-STM32L031", "stm32l0x1", "wlcsp25"] +mcu-STM32L041F6Px = ["io-STM32L031", "stm32l0x1", "tssop20"] +mcu-STM32L041G6Ux = ["io-STM32L031", "stm32l0x1", "ufqfpn28"] +mcu-STM32L041G6UxS = ["io-STM32L031", "stm32l0x1", "ufqfpn28"] +mcu-STM32L041K6Tx = ["io-STM32L031", "stm32l0x1", "lqfp32"] +mcu-STM32L041K6Ux = ["io-STM32L031", "stm32l0x1", "ufqfpn32"] +mcu-STM32L051C6Tx = ["io-STM32L051", "stm32l0x1", "lqfp48"] +mcu-STM32L051C8Tx = ["io-STM32L051", "stm32l0x1", "lqfp48"] +mcu-STM32L051K6Tx = ["io-STM32L051", "stm32l0x1", "lqfp32"] +mcu-STM32L051K6Ux = ["io-STM32L051", "stm32l0x1", "ufqfpn32"] +mcu-STM32L051K8Tx = ["io-STM32L051", "stm32l0x1", "lqfp32"] +mcu-STM32L051K8Ux = ["io-STM32L051", "stm32l0x1", "ufqfpn32"] +mcu-STM32L051R6Hx = ["io-STM32L051", "stm32l0x1", "tfbga64"] +mcu-STM32L051R6Tx = ["io-STM32L051", "stm32l0x1", "lqfp64"] +mcu-STM32L051R8Hx = ["io-STM32L051", "stm32l0x1", "tfbga64"] +mcu-STM32L051R8Tx = ["io-STM32L051", "stm32l0x1", "lqfp64"] +mcu-STM32L051T6Yx = ["io-STM32L051", "stm32l0x1", "wlcsp36"] +mcu-STM32L051T8Yx = ["io-STM32L051", "stm32l0x1", "wlcsp36"] +mcu-STM32L052C6Tx = ["io-STM32L051", "stm32l0x2", "lqfp48"] +mcu-STM32L052C8Tx = ["io-STM32L051", "stm32l0x2", "lqfp48"] +mcu-STM32L052K6Tx = ["io-STM32L051", "stm32l0x2", "lqfp32"] +mcu-STM32L052K6Ux = ["io-STM32L051", "stm32l0x2", "ufqfpn32"] +mcu-STM32L052K8Tx = ["io-STM32L051", "stm32l0x2", "lqfp32"] +mcu-STM32L052K8Ux = ["io-STM32L051", "stm32l0x2", "ufqfpn32"] +mcu-STM32L052R6Hx = ["io-STM32L051", "stm32l0x2", "tfbga64"] +mcu-STM32L052R6Tx = ["io-STM32L051", "stm32l0x2", "lqfp64"] +mcu-STM32L052R8Hx = ["io-STM32L051", "stm32l0x2", "tfbga64"] +mcu-STM32L052R8Tx = ["io-STM32L051", "stm32l0x2", "lqfp64"] +mcu-STM32L052T6Yx = ["io-STM32L051", "stm32l0x2", "wlcsp36"] +mcu-STM32L052T8Fx = ["io-STM32L051", "stm32l0x2", "wlcsp36"] +mcu-STM32L052T8Yx = ["io-STM32L051", "stm32l0x2", "wlcsp36"] +mcu-STM32L053C6Tx = ["io-STM32L051", "stm32l0x3", "lqfp48"] +mcu-STM32L053C8Tx = ["io-STM32L051", "stm32l0x3", "lqfp48"] +mcu-STM32L053R6Hx = ["io-STM32L051", "stm32l0x3", "tfbga64"] +mcu-STM32L053R6Tx = ["io-STM32L051", "stm32l0x3", "lqfp64"] +mcu-STM32L053R8Hx = ["io-STM32L051", "stm32l0x3", "tfbga64"] +mcu-STM32L053R8Tx = ["io-STM32L051", "stm32l0x3", "lqfp64"] +mcu-STM32L062K8Tx = ["io-STM32L051", "stm32l0x2", "lqfp32"] +mcu-STM32L062K8Ux = ["io-STM32L051", "stm32l0x2", "ufqfpn32"] +mcu-STM32L063C8Tx = ["io-STM32L051", "stm32l0x3", "lqfp48"] +mcu-STM32L063R8Tx = ["io-STM32L051", "stm32l0x3", "lqfp64"] +mcu-STM32L071C8Tx = ["io-STM32L071", "stm32l0x1", "lqfp48"] +mcu-STM32L071CBTx = ["io-STM32L071", "stm32l0x1", "lqfp48"] +mcu-STM32L071CBYx = ["io-STM32L071", "stm32l0x1", "wlcsp49"] +mcu-STM32L071CZTx = ["io-STM32L071", "stm32l0x1", "lqfp48"] +mcu-STM32L071CZYx = ["io-STM32L071", "stm32l0x1", "wlcsp49"] +mcu-STM32L071K8Ux = ["io-STM32L071", "stm32l0x1", "ufqfpn32"] +mcu-STM32L071KBTx = ["io-STM32L071", "stm32l0x1", "lqfp32"] +mcu-STM32L071KBUx = ["io-STM32L071", "stm32l0x1", "ufqfpn32"] +mcu-STM32L071KZTx = ["io-STM32L071", "stm32l0x1", "lqfp32"] +mcu-STM32L071KZUx = ["io-STM32L071", "stm32l0x1", "ufqfpn32"] +mcu-STM32L071RBHx = ["io-STM32L071", "stm32l0x1", "tfbga64"] +mcu-STM32L071RBTx = ["io-STM32L071", "stm32l0x1", "lqfp64"] +mcu-STM32L071RZHx = ["io-STM32L071", "stm32l0x1", "tfbga64"] +mcu-STM32L071RZTx = ["io-STM32L071", "stm32l0x1", "lqfp64"] +mcu-STM32L071V8Ix = ["io-STM32L071", "stm32l0x1", "ufbga100"] +mcu-STM32L071V8Tx = ["io-STM32L071", "stm32l0x1", "lqfp100"] +mcu-STM32L071VBIx = ["io-STM32L071", "stm32l0x1", "ufbga100"] +mcu-STM32L071VBTx = ["io-STM32L071", "stm32l0x1", "lqfp100"] +mcu-STM32L071VZIx = ["io-STM32L071", "stm32l0x1", "ufbga100"] +mcu-STM32L071VZTx = ["io-STM32L071", "stm32l0x1", "lqfp100"] +mcu-STM32L072CBTx = ["io-STM32L071", "stm32l0x2", "lqfp48"] +mcu-STM32L072CBYx = ["io-STM32L071", "stm32l0x2", "wlcsp49"] +mcu-STM32L072CZEx = ["io-STM32L071", "stm32l0x2", "ewlcsp49"] +mcu-STM32L072CZTx = ["io-STM32L071", "stm32l0x2", "lqfp48"] +mcu-STM32L072CZYx = ["io-STM32L071", "stm32l0x2", "wlcsp49"] +mcu-STM32L072KBTx = ["io-STM32L071", "stm32l0x2", "lqfp32"] +mcu-STM32L072KBUx = ["io-STM32L071", "stm32l0x2", "ufqfpn32"] +mcu-STM32L072KZTx = ["io-STM32L071", "stm32l0x2", "lqfp32"] +mcu-STM32L072KZUx = ["io-STM32L071", "stm32l0x2", "ufqfpn32"] +mcu-STM32L072RBHx = ["io-STM32L071", "stm32l0x2", "tfbga64"] +mcu-STM32L072RBIx = ["io-STM32L071", "stm32l0x2", "ufbga64"] +mcu-STM32L072RBTx = ["io-STM32L071", "stm32l0x2", "lqfp64"] +mcu-STM32L072RZHx = ["io-STM32L071", "stm32l0x2", "tfbga64"] +mcu-STM32L072RZIx = ["io-STM32L071", "stm32l0x2", "ufbga64"] +mcu-STM32L072RZTx = ["io-STM32L071", "stm32l0x2", "lqfp64"] +mcu-STM32L072V8Ix = ["io-STM32L071", "stm32l0x2", "ufbga100"] +mcu-STM32L072V8Tx = ["io-STM32L071", "stm32l0x2", "lqfp100"] +mcu-STM32L072VBIx = ["io-STM32L071", "stm32l0x2", "ufbga100"] +mcu-STM32L072VBTx = ["io-STM32L071", "stm32l0x2", "lqfp100"] +mcu-STM32L072VZIx = ["io-STM32L071", "stm32l0x2", "ufbga100"] +mcu-STM32L072VZTx = ["io-STM32L071", "stm32l0x2", "lqfp100"] +mcu-STM32L073CBTx = ["io-STM32L071", "stm32l0x3", "lqfp48"] +mcu-STM32L073CZTx = ["io-STM32L071", "stm32l0x3", "lqfp48"] +mcu-STM32L073RBHx = ["io-STM32L071", "stm32l0x3", "tfbga64"] +mcu-STM32L073RBTx = ["io-STM32L071", "stm32l0x3", "lqfp64"] +mcu-STM32L073RZHx = ["io-STM32L071", "stm32l0x3", "tfbga64"] +mcu-STM32L073RZIx = ["io-STM32L071", "stm32l0x3", "ufbga64"] +mcu-STM32L073RZTx = ["io-STM32L071", "stm32l0x3", "lqfp64"] +mcu-STM32L073V8Ix = ["io-STM32L071", "stm32l0x3", "ufbga100"] +mcu-STM32L073V8Tx = ["io-STM32L071", "stm32l0x3", "lqfp100"] +mcu-STM32L073VBIx = ["io-STM32L071", "stm32l0x3", "ufbga100"] +mcu-STM32L073VBTx = ["io-STM32L071", "stm32l0x3", "lqfp100"] +mcu-STM32L073VZIx = ["io-STM32L071", "stm32l0x3", "ufbga100"] +mcu-STM32L073VZTx = ["io-STM32L071", "stm32l0x3", "lqfp100"] +mcu-STM32L081CBTx = ["io-STM32L071", "stm32l0x1", "lqfp48"] +mcu-STM32L081CZTx = ["io-STM32L071", "stm32l0x1", "lqfp48"] +mcu-STM32L081KZTx = ["io-STM32L071", "stm32l0x1", "lqfp32"] +mcu-STM32L081KZUx = ["io-STM32L071", "stm32l0x1", "ufqfpn32"] +mcu-STM32L082CZYx = ["io-STM32L071", "stm32l0x2", "wlcsp49"] +mcu-STM32L082KBTx = ["io-STM32L071", "stm32l0x2", "lqfp32"] +mcu-STM32L082KBUx = ["io-STM32L071", "stm32l0x2", "ufqfpn32"] +mcu-STM32L082KZTx = ["io-STM32L071", "stm32l0x2", "lqfp32"] +mcu-STM32L082KZUx = ["io-STM32L071", "stm32l0x2", "ufqfpn32"] +mcu-STM32L083CBTx = ["io-STM32L071", "stm32l0x3", "lqfp48"] +mcu-STM32L083CZTx = ["io-STM32L071", "stm32l0x3", "lqfp48"] +mcu-STM32L083RBHx = ["io-STM32L071", "stm32l0x3", "tfbga64"] +mcu-STM32L083RBTx = ["io-STM32L071", "stm32l0x3", "lqfp64"] +mcu-STM32L083RZHx = ["io-STM32L071", "stm32l0x3", "tfbga64"] +mcu-STM32L083RZTx = ["io-STM32L071", "stm32l0x3", "lqfp64"] +mcu-STM32L083V8Ix = ["io-STM32L071", "stm32l0x3", "ufbga100"] +mcu-STM32L083V8Tx = ["io-STM32L071", "stm32l0x3", "lqfp100"] +mcu-STM32L083VBIx = ["io-STM32L071", "stm32l0x3", "ufbga100"] +mcu-STM32L083VBTx = ["io-STM32L071", "stm32l0x3", "lqfp100"] +mcu-STM32L083VZIx = ["io-STM32L071", "stm32l0x3", "ufbga100"] +mcu-STM32L083VZTx = ["io-STM32L071", "stm32l0x3", "lqfp100"] [profile.dev] codegen-units = 1 diff --git a/src/adc.rs b/src/adc.rs index 92b53da9..85fb714d 100755 --- a/src/adc.rs +++ b/src/adc.rs @@ -247,7 +247,7 @@ adc_pins! { feature = "lqfp100", feature = "tfbga64", feature = "ufbga64", - feature = "ufbg100", + feature = "ufbga100", feature = "wlcsp49", ), ))] @@ -271,7 +271,7 @@ adc_pins! { #[cfg(all( feature = "stm32l072", - any(feature = "lqfp64", feature = "lqfp100", feature = "ufbg100",), + any(feature = "lqfp64", feature = "lqfp100", feature = "ufbga100",), ))] adc_pins! { Channel13: (gpioc::PC3, 13u8), @@ -290,7 +290,7 @@ adc_pins! { feature = "lqfp100", feature = "tfbga64", feature = "ufbga64", - feature = "ufbg100", + feature = "ufbga100", ), ))] adc_pins! {