#nxp #imxrt #gpio-pin #no-std

no-std imxrt-iomuxc-build

为imxrt-iomuxc软件包提供构建支持。不适用于通用用途。imxrt-rs项目的一部分。

1个不稳定版本

0.1.0 2020年8月29日

#15#imxrt

Download history 37/week @ 2024-03-11 36/week @ 2024-03-18 41/week @ 2024-03-25 65/week @ 2024-04-01 31/week @ 2024-04-08 38/week @ 2024-04-15 39/week @ 2024-04-22 25/week @ 2024-04-29 34/week @ 2024-05-06 29/week @ 2024-05-13 43/week @ 2024-05-20 28/week @ 2024-05-27 31/week @ 2024-06-03 21/week @ 2024-06-10 37/week @ 2024-06-17 30/week @ 2024-06-24

每月124次下载

MIT/Apache

19KB
250

imxrt-iomuxc软件包提供构建脚本支持

受众

此软件包面向i.MX RT IOMUXC软件包的开发者。最终用户不应直接使用此软件包。

生成类型别名

为处理器引脚创建类型别名。在构建脚本中使用PadRangewrite_pads的组合来生成您的模块。然后,在您的软件包中include!它。

例如,一个类似于的build.rs构建脚本将生成可以包含在您的lib.rs

// ~~ build.rs ~~
use imxrt_iomuxc_build as build;
use std::{env, fs, io, path::PathBuf};

fn main() -> io::Result<()> {
    let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
    let mut pads_rs = fs::File::create(out_dir.join("pads.rs"))?;

    let emc = build::PadRange::new("EMC", 0..42);
    let ad_b0 = build::PadRange::new("AD_B0", 0..16);
    let ad_b1 = build::PadRange::new("AD_B1", 0..16);
    let b0 = build::PadRange::new("B0", 0..16);
    let b1 = build::PadRange::new("B1", 0..16);
    let sd_b0 = build::PadRange::new("SD_B0", 0..6);
    let sd_b1 = build::PadRange::new("SD_B1", 0..12);

    build::write_pads(
        &mut pads_rs,
        vec![&emc, &ad_b0, &ad_b1, &b0, &b1, &sd_b0, &sd_b1],
    )?;
    Ok(())
}

// ~~ lib.rs ~~
include!(concat!(env!("OUT_DIR"), "/pads.rs"));

有关生成的模块的详细信息,请参阅write_pads()函数

实现GPIO Pin特性

对于在软件包类型别名中创建的类型别名,您可以通过使用ImplGpioPinwrite_impl_gpio_pins来实现GPIO Pin特性。

build::write_impl_gpio_pins(
    &mut pads_rs,
    vec![
        // GPIO1
        build::ImplGpioPin::from_range(&ad_b0, build::GpioRange::no_offset(1, 5)),
        build::ImplGpioPin::from_range(&ad_b1, build::GpioRange {
            module: 1,
            offset: 16,
            alt: 5,
        }),
        // GPIO2
        build::ImplGpioPin::from_range(&b0, build::GpioRange::no_offset(2, 5)),
        build::ImplGpioPin::from_range(&b1, build::GpioRange {
            module: 2,
            offset: 16,
            alt: 5,
        }),
    ],
).unwrap();

依赖关系

~83KB