1个不稳定版本
0.1.0 | 2020年8月29日 |
---|
#15 在 #imxrt
每月124次下载
19KB
250 行
为imxrt-iomuxc
软件包提供构建脚本支持
受众
此软件包面向i.MX RT IOMUXC软件包的开发者。最终用户不应直接使用此软件包。
生成类型别名
为处理器引脚创建类型别名。在构建脚本中使用PadRange
和write_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
特性
对于在软件包类型别名中创建的类型别名,您可以通过使用ImplGpioPin
和write_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