From 8184bb809b65281cfcf0035e40c7c215d6b9aeda Mon Sep 17 00:00:00 2001 From: Jakob Date: Tue, 4 Nov 2025 19:55:09 +0100 Subject: Implement into_ring_buffered for g4. Add methods for configuring injected sampling for g4. --- embassy-stm32/src/timer/complementary_pwm.rs | 12 +++++++++++- embassy-stm32/src/timer/low_level.rs | 10 ++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) (limited to 'embassy-stm32/src/timer') diff --git a/embassy-stm32/src/timer/complementary_pwm.rs b/embassy-stm32/src/timer/complementary_pwm.rs index 75a83629c..9a56a41fb 100644 --- a/embassy-stm32/src/timer/complementary_pwm.rs +++ b/embassy-stm32/src/timer/complementary_pwm.rs @@ -2,7 +2,7 @@ use core::marker::PhantomData; -pub use stm32_metapac::timer::vals::{Ckd, Ossi, Ossr}; +pub use stm32_metapac::timer::vals::{Ckd, Mms2, Ossi, Ossr}; use super::low_level::{CountingMode, OutputPolarity, Timer}; use super::simple_pwm::PwmPin; @@ -136,6 +136,16 @@ impl<'d, T: AdvancedInstance4Channel> ComplementaryPwm<'d, T> { self.inner.get_moe() } + /// Set Master Slave Mode 2 + pub fn set_mms2(&mut self, mms2: Mms2) { + self.inner.set_mms2_selection(mms2); + } + + /// Set Repetition Counter + pub fn set_repetition_counter(&mut self, val: u16) { + self.inner.set_repetition_counter(val); + } + /// Enable the given channel. pub fn enable(&mut self, channel: Channel) { self.inner.enable_channel(channel, true); diff --git a/embassy-stm32/src/timer/low_level.rs b/embassy-stm32/src/timer/low_level.rs index 82645887e..0122fe4f7 100644 --- a/embassy-stm32/src/timer/low_level.rs +++ b/embassy-stm32/src/timer/low_level.rs @@ -814,6 +814,16 @@ impl<'d, T: AdvancedInstance4Channel> Timer<'d, T> { self.regs_advanced().cr2().modify(|w| w.set_oisn(channel.index(), val)); } + /// Set master mode selection 2 + pub fn set_mms2_selection(&self, mms2: vals::Mms2) { + self.regs_advanced().cr2().modify(|w| w.set_mms2(mms2)); + } + + /// Set repetition counter + pub fn set_repetition_counter(&self, val: u16) { + self.regs_advanced().rcr().modify(|w| w.set_rep(val)); + } + /// Trigger software break 1 or 2 /// Setting this bit generates a break event. This bit is automatically cleared by the hardware. pub fn trigger_software_break(&self, n: usize) { -- cgit