embassy-stm32

Crates

git

Versions

stm32c011j6

Flavors

Struct Adc

Source
pub struct Adc<'d, T: Instance> { /* private fields */ }
Expand description

Analog to Digital driver.

Implementations§

Source§

impl<'d, T: Instance> Adc<'d, T>

Source

pub fn new( adc: impl Peripheral<P = T> + 'd, sample_time: SampleTime, resolution: Resolution, ) -> Self

Create a new ADC driver.

Source

pub fn enable_vrefint(&self) -> VrefInt

Enable reading the voltage reference internal channel.

Source

pub fn enable_temperature(&self) -> Temperature

Enable reading the temperature internal channel.

Source

pub fn set_sample_time_all_channels(&mut self, sample_time: SampleTime)

Set the ADC sample time. Shall only be called when ADC is not converting.

Source

pub fn set_resolution(&mut self, resolution: Resolution)

Set the ADC resolution.

Source

pub fn blocking_read(&mut self, channel: &mut impl AdcChannel<T>) -> u16

Source

pub async fn read_in_hw_order( &mut self, rx_dma: &mut impl RxDma<T>, hw_channel_selection: u32, scandir: Scandir, readings: &mut [u16], )

Read one or multiple ADC channels using DMA in hardware order. Readings will be ordered based on hardware ADC channel number and scandir setting. Readings won’t be in the same order as in the set!

In STM32C0, channels bigger than 14 cannot be read using sequencer, so you have to use either blocking reads or use the mechanism to read in HW order (CHSELRMOD=0). TODO(chudsaviet): externalize generic code and merge with read().

Source

pub async fn read( &mut self, rx_dma: &mut impl RxDma<T>, channel_sequence: impl ExactSizeIterator<Item = &mut AnyAdcChannel<T>>, readings: &mut [u16], )

Auto Trait Implementations§

§

impl<'d, T> Freeze for Adc<'d, T>
where T: Freeze,

§

impl<'d, T> RefUnwindSafe for Adc<'d, T>
where T: RefUnwindSafe,

§

impl<'d, T> Send for Adc<'d, T>
where T: Send,

§

impl<'d, T> Sync for Adc<'d, T>
where T: Sync,

§

impl<'d, T> Unpin for Adc<'d, T>
where T: Unpin,

§

impl<'d, T> !UnwindSafe for Adc<'d, T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.