`peripherals.APB_SARADC.split()`是什么类型?

问题描述 投票:0回答:1

揭秘..拆分....使用ADC博客:

// Promote ADC peripheral to HAL-level Struct
let analog = peripherals.APB_SARADC.split();

但我无法弄清楚

.split()
的返回类型是什么,甚至无法确定它使用的是什么定义。 rust-analyzer 没有
split
的工具提示,并且“未找到“
split
”的类型定义。
analog
的工具提示仅显示
let analog: {unknown}

然后我可以在这段代码中使用它,该代码可以构建并运行而不会惊慌(尽管我正在尝试调试东西)

// Create handle for ADC, configuring clock, and passing configuration handle
    let mut adc = ADC::adc(
        &mut system.peripheral_clock_control,
        analog.adc1,                               // <<< "no definition found for `adc1`
        adc_config,
    )
    .unwrap();

ADC::adc 想要一个

adc_instance: impl crate::peripheral::Peripheral<P = ADCI> + 'd
作为该参数,但我无法将其调整为
analog
上接受的显式类型注释。

如果 rust 不知道模拟是什么,为什么不会出现编译错误?它是什么类型?

rust embedded hal peripherals
1个回答
0
投票

如果您使用 esp32c3-hal 板条箱,则通过 .split()

 特征在 
APB_SARADC 类型上提供
SarAdcExt
analog
的结果类型将是
AvailableAnalog

很难说为什么 rust-analyzer 在推导类型时出现问题,但编译器应该信任它,所以你的代码显然不存在类型问题。

© www.soinside.com 2019 - 2024. All rights reserved.