pub struct PioStepDir<'d, T: Instance, const SM: usize> { /* private fields */ }Expand description
PIO-backed Step/Dir stepper pulse generator.
One pin is driven by PIO for STEP pulses, and one GPIO pin is controlled by software for DIR.
Implementations§
Source§impl<'d, T: Instance, const SM: usize> PioStepDir<'d, T, SM>
impl<'d, T: Instance, const SM: usize> PioStepDir<'d, T, SM>
Sourcepub fn new(
pio: &mut Common<'d, T>,
sm: StateMachine<'d, T, SM>,
irq: Irq<'d, T, SM>,
step_pin: Peri<'d, impl PioPin>,
dir_pin: Peri<'d, impl GpioPin>,
program: &PioStepDirProgram<'d, T>,
) -> Self
pub fn new( pio: &mut Common<'d, T>, sm: StateMachine<'d, T, SM>, irq: Irq<'d, T, SM>, step_pin: Peri<'d, impl PioPin>, dir_pin: Peri<'d, impl GpioPin>, program: &PioStepDirProgram<'d, T>, ) -> Self
Configure a state machine to generate STEP pulses and bind a DIR pin.
Sourcepub fn min_frequency(&self) -> u32
pub fn min_frequency(&self) -> u32
Return the minimum supported pulse frequency in Hz for this program.
Sourcepub fn set_frequency(
&mut self,
freq_hz: u32,
) -> Result<(), StepDirFrequencyError>
pub fn set_frequency( &mut self, freq_hz: u32, ) -> Result<(), StepDirFrequencyError>
Set output pulse frequency in Hz.
Sourcepub fn set_direction(&mut self, direction: StepDir)
pub fn set_direction(&mut self, direction: StepDir)
Set motion direction.
Sourcepub async fn move_with_dir(&mut self, steps: u32, direction: StepDir)
pub async fn move_with_dir(&mut self, steps: u32, direction: StepDir)
Generate an exact number of STEP pulses in the given direction and wait until completion.
Sourcepub async fn move_steps(&mut self, steps: u32)
pub async fn move_steps(&mut self, steps: u32)
Generate an exact number of STEP pulses and wait until completion.
If this future is dropped before completion (e.g. cancelled via select!),
the PIO state machine is automatically reset and the STEP pin is driven low.
Sourcepub fn release(
self,
) -> (Irq<'d, T, SM>, StateMachine<'d, T, SM>, PioPinHandle<'d, T>, Output<'d>)
pub fn release( self, ) -> (Irq<'d, T, SM>, StateMachine<'d, T, SM>, PioPinHandle<'d, T>, Output<'d>)
Release owned resources.
Auto Trait Implementations§
impl<'d, T, const SM: usize> !UnwindSafe for PioStepDir<'d, T, SM>
impl<'d, T, const SM: usize> Freeze for PioStepDir<'d, T, SM>
impl<'d, T, const SM: usize> RefUnwindSafe for PioStepDir<'d, T, SM>where
T: RefUnwindSafe,
impl<'d, T, const SM: usize> Send for PioStepDir<'d, T, SM>where
T: Send,
impl<'d, T, const SM: usize> Sync for PioStepDir<'d, T, SM>where
T: Sync,
impl<'d, T, const SM: usize> Unpin for PioStepDir<'d, T, SM>
impl<'d, T, const SM: usize> UnsafeUnpin for PioStepDir<'d, T, SM>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
Source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
Source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
Performs the conversion.
Source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
Source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
Performs the conversion.
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> StrictAs for T
impl<T> StrictAs for T
Source§fn strict_as<Dst>(self) -> Dstwhere
T: StrictCast<Dst>,
fn strict_as<Dst>(self) -> Dstwhere
T: StrictCast<Dst>,
Casts the value.
Source§impl<Src, Dst> StrictCastFrom<Src> for Dstwhere
Src: StrictCast<Dst>,
impl<Src, Dst> StrictCastFrom<Src> for Dstwhere
Src: StrictCast<Dst>,
Source§fn strict_cast_from(src: Src) -> Dst
fn strict_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
Source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
Source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
Source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
Source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.