Refactor: Use PeripheralRef
				
					
				
			This commit is contained in:
		@@ -1,5 +1,3 @@
 | 
				
			|||||||
use core::marker::PhantomData;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use embassy_hal_common::into_ref;
 | 
					use embassy_hal_common::into_ref;
 | 
				
			||||||
use embedded_hal_02::blocking::delay::DelayUs;
 | 
					use embedded_hal_02::blocking::delay::DelayUs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -30,8 +28,8 @@ impl<T: Instance> super::sealed::AdcPin<T> for Temperature {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<'d, T: Instance> Adc<'d, T> {
 | 
					impl<'d, T: Instance> Adc<'d, T> {
 | 
				
			||||||
    pub fn new(_peri: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u32>) -> Self {
 | 
					    pub fn new(adc: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u32>) -> Self {
 | 
				
			||||||
        into_ref!(_peri);
 | 
					        into_ref!(adc);
 | 
				
			||||||
        T::enable();
 | 
					        T::enable();
 | 
				
			||||||
        T::reset();
 | 
					        T::reset();
 | 
				
			||||||
        unsafe {
 | 
					        unsafe {
 | 
				
			||||||
@@ -60,8 +58,8 @@ impl<'d, T: Instance> Adc<'d, T> {
 | 
				
			|||||||
        delay.delay_us((1_000_000) / Self::freq().0 + 1);
 | 
					        delay.delay_us((1_000_000) / Self::freq().0 + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Self {
 | 
					        Self {
 | 
				
			||||||
 | 
					            adc,
 | 
				
			||||||
            sample_time: Default::default(),
 | 
					            sample_time: Default::default(),
 | 
				
			||||||
            phantom: PhantomData,
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,8 +23,9 @@ use crate::peripherals;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#[cfg(not(adc_v1))]
 | 
					#[cfg(not(adc_v1))]
 | 
				
			||||||
pub struct Adc<'d, T: Instance> {
 | 
					pub struct Adc<'d, T: Instance> {
 | 
				
			||||||
 | 
					    #[allow(unused)]
 | 
				
			||||||
 | 
					    adc: crate::PeripheralRef<'d, T>,
 | 
				
			||||||
    sample_time: SampleTime,
 | 
					    sample_time: SampleTime,
 | 
				
			||||||
    phantom: core::marker::PhantomData<&'d mut T>,
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub(crate) mod sealed {
 | 
					pub(crate) mod sealed {
 | 
				
			||||||
@@ -44,9 +45,9 @@ pub(crate) mod sealed {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[cfg(not(any(adc_f1, adc_v2, adc_v4)))]
 | 
					#[cfg(not(any(adc_f1, adc_v2, adc_v4)))]
 | 
				
			||||||
pub trait Instance: sealed::Instance + 'static {}
 | 
					pub trait Instance: sealed::Instance + crate::Peripheral<P = Self> {}
 | 
				
			||||||
#[cfg(any(adc_f1, adc_v2, adc_v4))]
 | 
					#[cfg(any(adc_f1, adc_v2, adc_v4))]
 | 
				
			||||||
pub trait Instance: sealed::Instance + crate::rcc::RccPeripheral + 'static {}
 | 
					pub trait Instance: sealed::Instance + crate::Peripheral<P = Self> + crate::rcc::RccPeripheral {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub trait AdcPin<T: Instance>: sealed::AdcPin<T> {}
 | 
					pub trait AdcPin<T: Instance>: sealed::AdcPin<T> {}
 | 
				
			||||||
pub trait InternalChannel<T>: sealed::InternalChannel<T> {}
 | 
					pub trait InternalChannel<T>: sealed::InternalChannel<T> {}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,3 @@
 | 
				
			|||||||
use core::marker::PhantomData;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use embassy_hal_common::into_ref;
 | 
					use embassy_hal_common::into_ref;
 | 
				
			||||||
use embedded_hal_02::blocking::delay::DelayUs;
 | 
					use embedded_hal_02::blocking::delay::DelayUs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -96,8 +94,8 @@ impl<'d, T> Adc<'d, T>
 | 
				
			|||||||
where
 | 
					where
 | 
				
			||||||
    T: Instance,
 | 
					    T: Instance,
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    pub fn new(_peri: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u32>) -> Self {
 | 
					    pub fn new(adc: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u32>) -> Self {
 | 
				
			||||||
        into_ref!(_peri);
 | 
					        into_ref!(adc);
 | 
				
			||||||
        T::enable();
 | 
					        T::enable();
 | 
				
			||||||
        T::reset();
 | 
					        T::reset();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -113,8 +111,8 @@ where
 | 
				
			|||||||
        delay.delay_us(ADC_POWERUP_TIME_US);
 | 
					        delay.delay_us(ADC_POWERUP_TIME_US);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Self {
 | 
					        Self {
 | 
				
			||||||
 | 
					            adc,
 | 
				
			||||||
            sample_time: Default::default(),
 | 
					            sample_time: Default::default(),
 | 
				
			||||||
            phantom: PhantomData,
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,3 @@
 | 
				
			|||||||
use core::marker::PhantomData;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use embassy_hal_common::into_ref;
 | 
					use embassy_hal_common::into_ref;
 | 
				
			||||||
use embedded_hal_02::blocking::delay::DelayUs;
 | 
					use embedded_hal_02::blocking::delay::DelayUs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -61,8 +59,8 @@ impl<T: Instance> super::sealed::AdcPin<T> for Vbat {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<'d, T: Instance> Adc<'d, T> {
 | 
					impl<'d, T: Instance> Adc<'d, T> {
 | 
				
			||||||
    pub fn new(_peri: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u32>) -> Self {
 | 
					    pub fn new(adc: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u32>) -> Self {
 | 
				
			||||||
        into_ref!(_peri);
 | 
					        into_ref!(adc);
 | 
				
			||||||
        enable();
 | 
					        enable();
 | 
				
			||||||
        unsafe {
 | 
					        unsafe {
 | 
				
			||||||
            T::regs().cr().modify(|reg| {
 | 
					            T::regs().cr().modify(|reg| {
 | 
				
			||||||
@@ -92,8 +90,8 @@ impl<'d, T: Instance> Adc<'d, T> {
 | 
				
			|||||||
        delay.delay_us(1);
 | 
					        delay.delay_us(1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Self {
 | 
					        Self {
 | 
				
			||||||
 | 
					            adc,
 | 
				
			||||||
            sample_time: Default::default(),
 | 
					            sample_time: Default::default(),
 | 
				
			||||||
            phantom: PhantomData,
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,3 @@
 | 
				
			|||||||
use core::marker::PhantomData;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use atomic_polyfill::{AtomicU8, Ordering};
 | 
					use atomic_polyfill::{AtomicU8, Ordering};
 | 
				
			||||||
use embedded_hal_02::blocking::delay::DelayUs;
 | 
					use embedded_hal_02::blocking::delay::DelayUs;
 | 
				
			||||||
use pac::adc::vals::{Adcaldif, Boost, Difsel, Exten, Pcsel};
 | 
					use pac::adc::vals::{Adcaldif, Boost, Difsel, Exten, Pcsel};
 | 
				
			||||||
@@ -226,8 +224,8 @@ impl Prescaler {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<'d, T: Instance> Adc<'d, T> {
 | 
					impl<'d, T: Instance> Adc<'d, T> {
 | 
				
			||||||
    pub fn new(_peri: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u16>) -> Self {
 | 
					    pub fn new(adc: impl Peripheral<P = T> + 'd, delay: &mut impl DelayUs<u16>) -> Self {
 | 
				
			||||||
        embassy_hal_common::into_ref!(_peri);
 | 
					        embassy_hal_common::into_ref!(adc);
 | 
				
			||||||
        T::enable();
 | 
					        T::enable();
 | 
				
			||||||
        T::reset();
 | 
					        T::reset();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -257,8 +255,8 @@ impl<'d, T: Instance> Adc<'d, T> {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let mut s = Self {
 | 
					        let mut s = Self {
 | 
				
			||||||
 | 
					            adc,
 | 
				
			||||||
            sample_time: Default::default(),
 | 
					            sample_time: Default::default(),
 | 
				
			||||||
            phantom: PhantomData,
 | 
					 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        s.power_up(delay);
 | 
					        s.power_up(delay);
 | 
				
			||||||
        s.configure_differential_inputs();
 | 
					        s.configure_differential_inputs();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user