{"record":{"id":"412d5ef51e5cf11b","repo":"embassy-rs/embassy","slug":"feature-invalid-for-this-chip-no-pin-fo","errorCode":null,"errorMessage":"'{}' feature invalid for this chip! No pin '{}' found.\n\n Found pins: {:#?}","messagePattern":"'(.+?)' feature invalid for this chip! No pin '(.+?)' found\\.\n\n Found pins: (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"embassy-stm32/build.rs","lineNumber":335,"sourceCode":"        #[cfg(feature = \"split-pc2\")]\n        SplitFeature {\n            feature_name: \"split-pc2\".to_string(),\n            pin_name_with_c: \"PC2_C\".to_string(),\n            pin_name_without_c: \"PC2\".to_string(),\n        },\n        #[cfg(feature = \"split-pc3\")]\n        SplitFeature {\n            feature_name: \"split-pc3\".to_string(),\n            pin_name_with_c: \"PC3_C\".to_string(),\n            pin_name_without_c: \"PC3\".to_string(),\n        },\n    ];\n\n    for split_feature in &split_features {\n        if pin_set.contains(split_feature.pin_name_with_c.as_str()) {\n            singletons.push(split_feature.pin_name_with_c.clone());\n        } else {\n            panic!(\n                \"'{}' feature invalid for this chip! No pin '{}' found.\\n\n                Found pins: {:#?}\",\n                split_feature.feature_name, split_feature.pin_name_with_c, pin_set\n            )\n        }\n    }\n\n    // ========\n    // Handle time-driver-XXXX features.\n\n    let time_driver = match env::vars()\n        .map(|(a, _)| a)\n        .filter(|x| x.starts_with(\"CARGO_FEATURE_TIME_DRIVER_\"))\n        .get_one()\n    {\n        Ok(x) => Some(\n            x.strip_prefix(\"CARGO_FEATURE_TIME_DRIVER_\")\n                .unwrap()","sourceCodeStart":317,"sourceCodeEnd":353,"githubUrl":"https://github.com/embassy-rs/embassy/blob/463a07b963419a1bfe61d5d597c44acb810afb8b/embassy-stm32/build.rs#L317-L353","documentation":"Some STM32 pins are split across ports (e.g. PC13/PC14 style split features). The build script validates each requested split feature against the chip's actual pin set; if the pin referenced by the split feature does not exist on this chip, it panics listing the feature name, pin, and all found pins.","triggerScenarios":"Enabling a pin-split Cargo feature (e.g. a feature that remaps PAxx/PCxx pin-name-with-c) whose target pin is absent from the selected chip's pin database during build script pin enumeration.","commonSituations":"Copying features from a different chip's example; typo/mismatch between chip feature and split-pin feature; upgrading embassy-stm32 where the pin database changed for your chip.","solutions":["Remove the invalid split-pin feature from embassy-stm32's features list","Pick the correct split feature matching a pin that exists on your chip (compare against the 'Found pins' list in the panic output)","Use the chip's default pin definition instead of the split feature if the split is unnecessary"],"exampleFix":"# before\nfeatures = [\"stm32wl55jc\", \"split-pa2-pa3\"] // pin not on this chip\n# after\nfeatures = [\"stm32wl55jc\"] // rely on default pin mapping, or use a valid split feature","handlingStrategy":"validation","validationCode":"# confirm the split-pin feature's pin exists on your chip before enabling\n# check the panic's 'Found pins' list or the chip metadata in embassy-stm32","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only enable split features copied from examples for the same chip","Compare feature name against chip pin list when upgrading embassy-stm32","Prefer default pin definitions unless a split is required"],"tags":["build-script","cargo-features","gpio","stm32"],"backgroundTag":"invalid-config-value","analyzedSha":"463a07b963419a1bfe61d5d597c44acb810afb8b","analyzedAt":"2026-09-10T13:38:26.660Z","contentChangedAt":"2026-09-10T13:38:26.660Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}