diff options
| author | Andres Hurtado Lopez <[email protected]> | 2023-02-26 21:23:51 -0500 |
|---|---|---|
| committer | Andres Hurtado Lopez <[email protected]> | 2023-02-26 21:23:51 -0500 |
| commit | 2331d58aa667d31ce74a2e10582a93b710c2aef7 (patch) | |
| tree | 9daa6b70b5e1be84f6e9e1298429949dee50f126 | |
| parent | 482ba835c4eec6d3bb006eea3a715360c170e418 (diff) | |
RP-PICO UART adding set_baudrate: missing to run rust-fmt
| -rw-r--r-- | embassy-rp/src/uart/mod.rs | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/embassy-rp/src/uart/mod.rs b/embassy-rp/src/uart/mod.rs index 6b3e2406d..42b3671a0 100644 --- a/embassy-rp/src/uart/mod.rs +++ b/embassy-rp/src/uart/mod.rs | |||
| @@ -296,7 +296,7 @@ impl<'d, T: Instance> Uart<'d, T, Async> { | |||
| 296 | Some(rx_dma.map_into()), | 296 | Some(rx_dma.map_into()), |
| 297 | config, | 297 | config, |
| 298 | ) | 298 | ) |
| 299 | } | 299 | } |
| 300 | } | 300 | } |
| 301 | 301 | ||
| 302 | impl<'d, T: Instance + 'd, M: Mode> Uart<'d, T, M> { | 302 | impl<'d, T: Instance + 'd, M: Mode> Uart<'d, T, M> { |
| @@ -350,7 +350,7 @@ impl<'d, T: Instance + 'd, M: Mode> Uart<'d, T, M> { | |||
| 350 | pin.pad_ctrl().write(|w| w.set_ie(true)); | 350 | pin.pad_ctrl().write(|w| w.set_ie(true)); |
| 351 | } | 351 | } |
| 352 | 352 | ||
| 353 | Self::set_baudrate_inner(config.baudrate); | 353 | Self::set_baudrate_inner(config.baudrate); |
| 354 | 354 | ||
| 355 | let (pen, eps) = match config.parity { | 355 | let (pen, eps) = match config.parity { |
| 356 | Parity::ParityNone => (false, false), | 356 | Parity::ParityNone => (false, false), |
| @@ -385,22 +385,20 @@ impl<'d, T: Instance + 'd, M: Mode> Uart<'d, T, M> { | |||
| 385 | } | 385 | } |
| 386 | } | 386 | } |
| 387 | 387 | ||
| 388 | |||
| 389 | /// sets baudrate on runtime | 388 | /// sets baudrate on runtime |
| 390 | pub fn set_baudrate(&mut self, baudrate: u32) { | 389 | pub fn set_baudrate(&mut self, baudrate: u32) { |
| 391 | Self::set_baudrate_inner(baudrate); | 390 | Self::set_baudrate_inner(baudrate); |
| 392 | } | 391 | } |
| 393 | 392 | ||
| 394 | |||
| 395 | fn set_baudrate_inner(baudrate: u32) { | 393 | fn set_baudrate_inner(baudrate: u32) { |
| 396 | let r = T::regs(); | 394 | let r = T::regs(); |
| 397 | 395 | ||
| 398 | let clk_base = crate::clocks::clk_peri_freq(); | 396 | let clk_base = crate::clocks::clk_peri_freq(); |
| 399 | 397 | ||
| 400 | let baud_rate_div = (8 * clk_base) / baudrate; | 398 | let baud_rate_div = (8 * clk_base) / baudrate; |
| 401 | let mut baud_ibrd = baud_rate_div >> 7; | 399 | let mut baud_ibrd = baud_rate_div >> 7; |
| 402 | let mut baud_fbrd = ((baud_rate_div & 0x7f) + 1) / 2; | 400 | let mut baud_fbrd = ((baud_rate_div & 0x7f) + 1) / 2; |
| 403 | 401 | ||
| 404 | if baud_ibrd == 0 { | 402 | if baud_ibrd == 0 { |
| 405 | baud_ibrd = 1; | 403 | baud_ibrd = 1; |
| 406 | baud_fbrd = 0; | 404 | baud_fbrd = 0; |
| @@ -408,15 +406,13 @@ impl<'d, T: Instance + 'd, M: Mode> Uart<'d, T, M> { | |||
| 408 | baud_ibrd = 65535; | 406 | baud_ibrd = 65535; |
| 409 | baud_fbrd = 0; | 407 | baud_fbrd = 0; |
| 410 | } | 408 | } |
| 411 | 409 | ||
| 412 | unsafe { | 410 | unsafe { |
| 413 | 411 | // Load PL011's baud divisor registers | |
| 414 | // Load PL011's baud divisor registers | ||
| 415 | r.uartibrd().write_value(pac::uart::regs::Uartibrd(baud_ibrd)); | 412 | r.uartibrd().write_value(pac::uart::regs::Uartibrd(baud_ibrd)); |
| 416 | r.uartfbrd().write_value(pac::uart::regs::Uartfbrd(baud_fbrd)); | 413 | r.uartfbrd().write_value(pac::uart::regs::Uartfbrd(baud_fbrd)); |
| 417 | } | 414 | } |
| 418 | } | 415 | } |
| 419 | |||
| 420 | } | 416 | } |
| 421 | 417 | ||
| 422 | impl<'d, T: Instance, M: Mode> Uart<'d, T, M> { | 418 | impl<'d, T: Instance, M: Mode> Uart<'d, T, M> { |
