aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxoviat <[email protected]>2025-11-10 13:32:22 +0000
committerGitHub <[email protected]>2025-11-10 13:32:22 +0000
commit1da05747c416c989a128aabbbde4b46df7bba9b9 (patch)
tree92550d02cc17a30973405a8640ec68736e1c47b9
parent4ef7f91663b51e2cfeb6ef40d907bfff90737de8 (diff)
parentb584624b18d1070a589eca4a9fce9abd76413bfd (diff)
Merge pull request #4717 from chasingRs/fix/simple-pwm-32bit-timer-support
stm32/timer: Support 32-bit timers in SimplePwm waveform_up method
-rw-r--r--embassy-stm32/CHANGELOG.md1
-rw-r--r--embassy-stm32/src/timer/simple_pwm.rs35
2 files changed, 28 insertions, 8 deletions
diff --git a/embassy-stm32/CHANGELOG.md b/embassy-stm32/CHANGELOG.md
index f85fd82ef..595778748 100644
--- a/embassy-stm32/CHANGELOG.md
+++ b/embassy-stm32/CHANGELOG.md
@@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7 7
8## Unreleased - ReleaseDate 8## Unreleased - ReleaseDate
9 9
10- feat: timer: Add 32-bit timer support to SimplePwm waveform_up method following waveform pattern ([#4717](https://github.com/embassy-rs/embassy/pull/4717))
10- feat: Add support for injected ADC measurements for g4 ([#4840](https://github.com/embassy-rs/embassy/pull/4840)) 11- feat: Add support for injected ADC measurements for g4 ([#4840](https://github.com/embassy-rs/embassy/pull/4840))
11- feat: Implement into_ring_buffered for g4 ([#4840](https://github.com/embassy-rs/embassy/pull/4840)) 12- feat: Implement into_ring_buffered for g4 ([#4840](https://github.com/embassy-rs/embassy/pull/4840))
12- feat: Add support for 13-bit address and 16-bit data SDRAM chips 13- feat: Add support for 13-bit address and 16-bit data SDRAM chips
diff --git a/embassy-stm32/src/timer/simple_pwm.rs b/embassy-stm32/src/timer/simple_pwm.rs
index 06315d7f3..36303aeb4 100644
--- a/embassy-stm32/src/timer/simple_pwm.rs
+++ b/embassy-stm32/src/timer/simple_pwm.rs
@@ -339,14 +339,33 @@ impl<'d, T: GeneralInstance4Channel> SimplePwm<'d, T> {
339 ..Default::default() 339 ..Default::default()
340 }; 340 };
341 341
342 Transfer::new_write( 342 match self.inner.bits() {
343 dma, 343 TimerBits::Bits16 => {
344 req, 344 Transfer::new_write(
345 duty, 345 dma,
346 self.inner.regs_1ch().ccr(channel.index()).as_ptr() as *mut u16, 346 req,
347 dma_transfer_option, 347 duty,
348 ) 348 self.inner.regs_1ch().ccr(channel.index()).as_ptr() as *mut u16,
349 .await 349 dma_transfer_option,
350 )
351 .await
352 }
353 #[cfg(not(any(stm32l0)))]
354 TimerBits::Bits32 => {
355 #[cfg(not(any(bdma, gpdma)))]
356 panic!("unsupported timer bits");
357
358 #[cfg(any(bdma, gpdma))]
359 Transfer::new_write(
360 dma,
361 req,
362 duty,
363 self.inner.regs_1ch().ccr(channel.index()).as_ptr() as *mut u32,
364 dma_transfer_option,
365 )
366 .await
367 }
368 };
350 }; 369 };
351 370
352 // restore output compare state 371 // restore output compare state