Put ADC input pin into analog mode

This commit is contained in:
Matthew W. Samsonoff 2022-10-03 13:03:42 -04:00 committed by Grant Miller
parent 7e9e628eb9
commit a0b6096610

View File

@ -236,7 +236,10 @@ impl<'d, T: Instance> Adc<'d, T> {
} }
} }
pub fn read(&mut self, pin: &mut impl AdcPin<T>) -> u16 { pub fn read<P>(&mut self, pin: &mut P) -> u16
where
P: AdcPin<T> + crate::gpio::sealed::Pin,
{
unsafe { unsafe {
// A.7.2 ADC enable sequence code example // A.7.2 ADC enable sequence code example
if T::regs().isr().read().adrdy() { if T::regs().isr().read().adrdy() {
@ -252,6 +255,7 @@ impl<'d, T: Instance> Adc<'d, T> {
T::regs().cfgr1().modify(|reg| reg.set_res(self.resolution.res())); T::regs().cfgr1().modify(|reg| reg.set_res(self.resolution.res()));
Self::set_channel_sample_time(pin.channel(), self.sample_time); Self::set_channel_sample_time(pin.channel(), self.sample_time);
pin.set_as_analog();
T::regs() T::regs()
.chselr() .chselr()
.write(|reg| reg.set_chselx(pin.channel() as usize, true)); .write(|reg| reg.set_chselx(pin.channel() as usize, true));