diff options
| author | xoviat <[email protected]> | 2025-11-10 13:32:22 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-10 13:32:22 +0000 |
| commit | 1da05747c416c989a128aabbbde4b46df7bba9b9 (patch) | |
| tree | 92550d02cc17a30973405a8640ec68736e1c47b9 | |
| parent | 4ef7f91663b51e2cfeb6ef40d907bfff90737de8 (diff) | |
| parent | b584624b18d1070a589eca4a9fce9abd76413bfd (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.md | 1 | ||||
| -rw-r--r-- | embassy-stm32/src/timer/simple_pwm.rs | 35 |
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 |
