// 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 不知道模拟是什么,为什么不会出现编译错误?它是什么类型?
如果您使用 esp32c3-hal 板条箱,则通过 .split()
特征在
APB_SARADC
类型上提供 SarAdcExt
。 analog
的结果类型将是 AvailableAnalog
。
很难说为什么 rust-analyzer 在推导类型时出现问题,但编译器应该信任它,所以你的代码显然不存在类型问题。