diff options
| -rw-r--r-- | embassy-stm32/src/usart/buffered.rs | 21 | ||||
| -rw-r--r-- | embassy-stm32/src/usart/ringbuffered.rs | 9 |
2 files changed, 27 insertions, 3 deletions
diff --git a/embassy-stm32/src/usart/buffered.rs b/embassy-stm32/src/usart/buffered.rs index f7b2bf4b4..814be2858 100644 --- a/embassy-stm32/src/usart/buffered.rs +++ b/embassy-stm32/src/usart/buffered.rs | |||
| @@ -12,8 +12,8 @@ use embassy_sync::waitqueue::AtomicWaker; | |||
| 12 | #[cfg(not(any(usart_v1, usart_v2)))] | 12 | #[cfg(not(any(usart_v1, usart_v2)))] |
| 13 | use super::DePin; | 13 | use super::DePin; |
| 14 | use super::{ | 14 | use super::{ |
| 15 | clear_interrupt_flags, configure, rdr, reconfigure, send_break, sr, tdr, Config, ConfigError, CtsPin, Error, Info, | 15 | clear_interrupt_flags, configure, rdr, reconfigure, send_break, set_baudrate, sr, tdr, Config, ConfigError, CtsPin, |
| 16 | Instance, Regs, RtsPin, RxPin, TxPin, | 16 | Error, Info, Instance, Regs, RtsPin, RxPin, TxPin, |
| 17 | }; | 17 | }; |
| 18 | use crate::gpio::{AfType, AnyPin, OutputType, Pull, SealedPin as _, Speed}; | 18 | use crate::gpio::{AfType, AnyPin, OutputType, Pull, SealedPin as _, Speed}; |
| 19 | use crate::interrupt::{self, InterruptExt}; | 19 | use crate::interrupt::{self, InterruptExt}; |
| @@ -441,6 +441,13 @@ impl<'d> BufferedUart<'d> { | |||
| 441 | pub fn send_break(&self) { | 441 | pub fn send_break(&self) { |
| 442 | self.tx.send_break() | 442 | self.tx.send_break() |
| 443 | } | 443 | } |
| 444 | |||
| 445 | /// Set baudrate | ||
| 446 | pub fn set_baudrate(&self, baudrate: u32) -> Result<(), ConfigError> { | ||
| 447 | self.tx.set_baudrate(baudrate)?; | ||
| 448 | self.rx.set_baudrate(baudrate)?; | ||
| 449 | Ok(()) | ||
| 450 | } | ||
| 444 | } | 451 | } |
| 445 | 452 | ||
| 446 | impl<'d> BufferedUartRx<'d> { | 453 | impl<'d> BufferedUartRx<'d> { |
| @@ -535,6 +542,11 @@ impl<'d> BufferedUartRx<'d> { | |||
| 535 | 542 | ||
| 536 | Ok(()) | 543 | Ok(()) |
| 537 | } | 544 | } |
| 545 | |||
| 546 | /// Set baudrate | ||
| 547 | pub fn set_baudrate(&self, baudrate: u32) -> Result<(), ConfigError> { | ||
| 548 | set_baudrate(self.info, self.kernel_clock, baudrate) | ||
| 549 | } | ||
| 538 | } | 550 | } |
| 539 | 551 | ||
| 540 | impl<'d> BufferedUartTx<'d> { | 552 | impl<'d> BufferedUartTx<'d> { |
| @@ -625,6 +637,11 @@ impl<'d> BufferedUartTx<'d> { | |||
| 625 | pub fn send_break(&self) { | 637 | pub fn send_break(&self) { |
| 626 | send_break(&self.info.regs); | 638 | send_break(&self.info.regs); |
| 627 | } | 639 | } |
| 640 | |||
| 641 | /// Set baudrate | ||
| 642 | pub fn set_baudrate(&self, baudrate: u32) -> Result<(), ConfigError> { | ||
| 643 | set_baudrate(self.info, self.kernel_clock, baudrate) | ||
| 644 | } | ||
| 628 | } | 645 | } |
| 629 | 646 | ||
| 630 | impl<'d> Drop for BufferedUartRx<'d> { | 647 | impl<'d> Drop for BufferedUartRx<'d> { |
diff --git a/embassy-stm32/src/usart/ringbuffered.rs b/embassy-stm32/src/usart/ringbuffered.rs index a791ac2a9..560ce4e8f 100644 --- a/embassy-stm32/src/usart/ringbuffered.rs +++ b/embassy-stm32/src/usart/ringbuffered.rs | |||
| @@ -8,7 +8,9 @@ use embassy_hal_internal::PeripheralRef; | |||
| 8 | use embedded_io_async::ReadReady; | 8 | use embedded_io_async::ReadReady; |
| 9 | use futures_util::future::{select, Either}; | 9 | use futures_util::future::{select, Either}; |
| 10 | 10 | ||
| 11 | use super::{clear_interrupt_flags, rdr, reconfigure, sr, Config, ConfigError, Error, Info, State, UartRx}; | 11 | use super::{ |
| 12 | clear_interrupt_flags, rdr, reconfigure, set_baudrate, sr, Config, ConfigError, Error, Info, State, UartRx, | ||
| 13 | }; | ||
| 12 | use crate::dma::ReadableRingBuffer; | 14 | use crate::dma::ReadableRingBuffer; |
| 13 | use crate::gpio::{AnyPin, SealedPin as _}; | 15 | use crate::gpio::{AnyPin, SealedPin as _}; |
| 14 | use crate::mode::Async; | 16 | use crate::mode::Async; |
| @@ -213,6 +215,11 @@ impl<'d> RingBufferedUartRx<'d> { | |||
| 213 | Either::Right(((), _)) => Ok(()), | 215 | Either::Right(((), _)) => Ok(()), |
| 214 | } | 216 | } |
| 215 | } | 217 | } |
| 218 | |||
| 219 | /// Set baudrate | ||
| 220 | pub fn set_baudrate(&self, baudrate: u32) -> Result<(), ConfigError> { | ||
| 221 | set_baudrate(self.info, self.kernel_clock, baudrate) | ||
| 222 | } | ||
| 216 | } | 223 | } |
| 217 | 224 | ||
| 218 | impl Drop for RingBufferedUartRx<'_> { | 225 | impl Drop for RingBufferedUartRx<'_> { |
