embassy-stm32

Crates

git

Versions

stm32l152vc

Flavors

embassy_stm32::dma

Struct Transfer

source
pub struct Transfer<'a> { /* private fields */ }
Expand description

DMA transfer.

Implementations§

source§

impl<'a> Transfer<'a>

source

pub unsafe fn new_read<W: Word>( channel: impl Peripheral<P = impl Channel> + 'a, request: Request, peri_addr: *mut W, buf: &'a mut [W], options: TransferOptions, ) -> Self

Create a new read DMA transfer (peripheral to memory).

source

pub unsafe fn new_read_raw<W: Word>( channel: impl Peripheral<P = impl Channel> + 'a, request: Request, peri_addr: *mut W, buf: *mut [W], options: TransferOptions, ) -> Self

Create a new read DMA transfer (peripheral to memory), using raw pointers.

source

pub unsafe fn new_write<W: Word>( channel: impl Peripheral<P = impl Channel> + 'a, request: Request, buf: &'a [W], peri_addr: *mut W, options: TransferOptions, ) -> Self

Create a new write DMA transfer (memory to peripheral).

source

pub unsafe fn new_write_raw<W: Word>( channel: impl Peripheral<P = impl Channel> + 'a, request: Request, buf: *const [W], peri_addr: *mut W, options: TransferOptions, ) -> Self

Create a new write DMA transfer (memory to peripheral), using raw pointers.

source

pub unsafe fn new_write_repeated<W: Word>( channel: impl Peripheral<P = impl Channel> + 'a, request: Request, repeated: &'a W, count: usize, peri_addr: *mut W, options: TransferOptions, ) -> Self

Create a new write DMA transfer (memory to peripheral), writing the same value repeatedly.

source

pub fn request_stop(&mut self)

Request the transfer to stop. The configuration for this channel will not be preserved. If you need to restart the transfer at a later point with the same configuration, see request_pause instead.

This doesn’t immediately stop the transfer, you have to wait until is_running returns false.

source

pub fn request_pause(&mut self)

Request the transfer to pause, keeping the existing configuration for this channel. To restart the transfer, call start again.

This doesn’t immediately stop the transfer, you have to wait until is_running returns false.

source

pub fn is_running(&mut self) -> bool

Return whether this transfer is still running.

If this returns false, it can be because either the transfer finished, or it was requested to stop early with request_stop.

source

pub fn get_remaining_transfers(&self) -> u16

Gets the total remaining transfers for the channel Note: this will be zero for transfers that completed without cancellation.

source

pub fn blocking_wait(self)

Blocking wait until the transfer finishes.

Trait Implementations§

source§

impl<'a> Drop for Transfer<'a>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<'a> Future for Transfer<'a>

source§

type Output = ()

The type of value produced on completion.
source§

fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>

Attempts to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more
source§

impl<'a> Unpin for Transfer<'a>

Auto Trait Implementations§

§

impl<'a> Freeze for Transfer<'a>

§

impl<'a> RefUnwindSafe for Transfer<'a>

§

impl<'a> Send for Transfer<'a>

§

impl<'a> Sync for Transfer<'a>

§

impl<'a> !UnwindSafe for Transfer<'a>

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> FutureExt for T
where T: Future + ?Sized,

source§

fn map<U, F>(self, f: F) -> Map<Self, F>
where F: FnOnce(Self::Output) -> U, Self: Sized,

Map this future’s output to a different type, returning a new future of the resulting type. Read more
source§

fn map_into<U>(self) -> MapInto<Self, U>
where Self::Output: Into<U>, Self: Sized,

Map this future’s output to a different type, returning a new future of the resulting type. Read more
source§

fn then<Fut, F>(self, f: F) -> Then<Self, Fut, F>
where F: FnOnce(Self::Output) -> Fut, Fut: Future, Self: Sized,

Chain on a computation for when a future finished, passing the result of the future to the provided closure f. Read more
source§

fn left_future<B>(self) -> Either<Self, B>
where B: Future<Output = Self::Output>, Self: Sized,

Wrap this future in an Either future, making it the left-hand variant of that Either. Read more
source§

fn right_future<A>(self) -> Either<A, Self>
where A: Future<Output = Self::Output>, Self: Sized,

Wrap this future in an Either future, making it the right-hand variant of that Either. Read more
source§

fn into_stream(self) -> IntoStream<Self>
where Self: Sized,

Convert this future into a single element stream. Read more
source§

fn flatten(self) -> Flatten<Self>
where Self::Output: Future, Self: Sized,

Flatten the execution of this future when the output of this future is itself another future. Read more
source§

fn flatten_stream(self) -> FlattenStream<Self>
where Self::Output: Stream, Self: Sized,

Flatten the execution of this future when the successful result of this future is a stream. Read more
source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Fuse a future such that poll will never again be called once it has completed. This method can be used to turn any Future into a FusedFuture. Read more
source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where F: FnOnce(&Self::Output), Self: Sized,

Do something with the output of a future before passing it on. Read more
source§

fn unit_error(self) -> UnitError<Self>
where Self: Sized,

source§

fn never_error(self) -> NeverError<Self>
where Self: Sized,

source§

fn poll_unpin(&mut self, cx: &mut Context<'_>) -> Poll<Self::Output>
where Self: Unpin,

A convenience for calling Future::poll on Unpin future types.
source§

fn now_or_never(self) -> Option<Self::Output>
where Self: Sized,

Evaluates and consumes the future, returning the resulting output if the future is ready after the first call to Future::poll. Read more
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<F> IntoFuture for F
where F: Future,

source§

type Output = <F as Future>::Output

The output that the future will produce on completion.
source§

type IntoFuture = F

Which kind of future are we turning this into?
source§

fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. Read more
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.
source§

impl<F> WithTimeout for F
where F: Future,

source§

type Output = <F as Future>::Output

Output type of the future.
source§

async fn with_timeout( self, timeout: Duration, ) -> Result<<F as WithTimeout>::Output, TimeoutError>

Runs a given future with a timeout. Read more
source§

async fn with_deadline( self, at: Instant, ) -> Result<<F as WithTimeout>::Output, TimeoutError>

Runs a given future with a deadline time. Read more