Refactor: Use PeripheralRef
This commit is contained in:
parent
08c8022583
commit
171b764d82
@ -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();
|
||||||
|
Loading…
Reference in New Issue
Block a user