diff options
| author | Matt Allen <[email protected]> | 2025-03-06 09:41:07 -0500 |
|---|---|---|
| committer | Matt Allen <[email protected]> | 2025-03-06 09:41:07 -0500 |
| commit | 1646dc36f2cd85f41a8ad8370912ec33fa4cf5e9 (patch) | |
| tree | bdff00c381ba63baff00c6ea959913732fd16038 /embassy-stm32/src/lptim | |
| parent | f22649e0082a9e9886d7fc2f1f8986682b4cc921 (diff) | |
Added gpio version specific code
Diffstat (limited to 'embassy-stm32/src/lptim')
| -rw-r--r-- | embassy-stm32/src/lptim/pwm.rs | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/embassy-stm32/src/lptim/pwm.rs b/embassy-stm32/src/lptim/pwm.rs index 9f3803cd6..43ef178ef 100644 --- a/embassy-stm32/src/lptim/pwm.rs +++ b/embassy-stm32/src/lptim/pwm.rs | |||
| @@ -10,7 +10,9 @@ use super::OutputPin; | |||
| 10 | #[cfg(any(lptim_v2a, lptim_v2b))] | 10 | #[cfg(any(lptim_v2a, lptim_v2b))] |
| 11 | use super::{channel::Channel, timer::ChannelDirection, Channel1Pin, Channel2Pin}; | 11 | use super::{channel::Channel, timer::ChannelDirection, Channel1Pin, Channel2Pin}; |
| 12 | use super::{BasicInstance, Instance}; | 12 | use super::{BasicInstance, Instance}; |
| 13 | use crate::gpio::{AfType, AnyPin, OutputType, Pull, Speed}; | 13 | #[cfg(gpio_v2)] |
| 14 | use crate::gpio::Pull; | ||
| 15 | use crate::gpio::{AfType, AnyPin, OutputType, Speed}; | ||
| 14 | use crate::time::Hertz; | 16 | use crate::time::Hertz; |
| 15 | use crate::Peripheral; | 17 | use crate::Peripheral; |
| 16 | 18 | ||
| @@ -33,13 +35,17 @@ pub struct PwmPin<'d, T, C> { | |||
| 33 | /// | 35 | /// |
| 34 | /// This configures the pwm pin settings | 36 | /// This configures the pwm pin settings |
| 35 | pub struct PwmPinConfig { | 37 | pub struct PwmPinConfig { |
| 38 | /// PWM Pin output type | ||
| 36 | pub output_type: OutputType, | 39 | pub output_type: OutputType, |
| 40 | /// PWM Pin speed | ||
| 37 | pub speed: Speed, | 41 | pub speed: Speed, |
| 42 | /// PWM Pin pull type | ||
| 43 | #[cfg(gpio_v2)] | ||
| 38 | pub pull: Pull, | 44 | pub pull: Pull, |
| 39 | } | 45 | } |
| 40 | 46 | ||
| 41 | macro_rules! channel_impl { | 47 | macro_rules! channel_impl { |
| 42 | ($new_chx:ident, $channel:ident, $pin_trait:ident) => { | 48 | ($new_chx:ident, $new_chx_with_config:ident, $channel:ident, $pin_trait:ident) => { |
| 43 | impl<'d, T: BasicInstance> PwmPin<'d, T, $channel> { | 49 | impl<'d, T: BasicInstance> PwmPin<'d, T, $channel> { |
| 44 | #[doc = concat!("Create a new ", stringify!($channel), " PWM pin instance.")] | 50 | #[doc = concat!("Create a new ", stringify!($channel), " PWM pin instance.")] |
| 45 | pub fn $new_chx(pin: impl Peripheral<P = impl $pin_trait<T>> + 'd) -> Self { | 51 | pub fn $new_chx(pin: impl Peripheral<P = impl $pin_trait<T>> + 'd) -> Self { |
| @@ -66,6 +72,9 @@ macro_rules! channel_impl { | |||
| 66 | pin.set_low(); | 72 | pin.set_low(); |
| 67 | pin.set_as_af( | 73 | pin.set_as_af( |
| 68 | pin.af_num(), | 74 | pin.af_num(), |
| 75 | #[cfg(gpio_v1)] | ||
| 76 | AfType::output(pin_config.output_type, pin_config.speed), | ||
| 77 | #[cfg(gpio_v2)] | ||
| 69 | AfType::output_pull(pin_config.output_type, pin_config.speed, pin_config.pull), | 78 | AfType::output_pull(pin_config.output_type, pin_config.speed, pin_config.pull), |
| 70 | ); | 79 | ); |
| 71 | }); | 80 | }); |
| @@ -79,11 +88,11 @@ macro_rules! channel_impl { | |||
| 79 | } | 88 | } |
| 80 | 89 | ||
| 81 | #[cfg(not(any(lptim_v2a, lptim_v2b)))] | 90 | #[cfg(not(any(lptim_v2a, lptim_v2b)))] |
| 82 | channel_impl!(new, Output, OutputPin); | 91 | channel_impl!(new, new_with_config, Output, OutputPin); |
| 83 | #[cfg(any(lptim_v2a, lptim_v2b))] | 92 | #[cfg(any(lptim_v2a, lptim_v2b))] |
| 84 | channel_impl!(new_ch1, Ch1, Channel1Pin); | 93 | channel_impl!(new_ch1, new_ch1_with_config, Ch1, Channel1Pin); |
| 85 | #[cfg(any(lptim_v2a, lptim_v2b))] | 94 | #[cfg(any(lptim_v2a, lptim_v2b))] |
| 86 | channel_impl!(new_ch2, Ch2, Channel2Pin); | 95 | channel_impl!(new_ch2, new_ch2_with_config, Ch2, Channel2Pin); |
| 87 | 96 | ||
| 88 | /// PWM driver. | 97 | /// PWM driver. |
| 89 | pub struct Pwm<'d, T: Instance> { | 98 | pub struct Pwm<'d, T: Instance> { |
