This commit is contained in:
Filipriec
2026-03-03 13:14:56 +01:00
parent adc4d6f29e
commit fae99273c2

View File

@@ -5,8 +5,8 @@
use defmt::*; use defmt::*;
use core::sync::atomic::{AtomicBool, Ordering}; use core::sync::atomic::{AtomicBool, Ordering};
use embassy_executor::Spawner; use embassy_executor::Spawner;
use embassy_stm32::usart::{Config, Uart, UartRx, InterruptHandler}; use embassy_stm32::usart::{Config, Uart, UartRx, UartTx, InterruptHandler};
use embassy_stm32::peripherals::USART1; use embassy_stm32::peripherals::{USART1, USART3};
use embassy_stm32::bind_interrupts; use embassy_stm32::bind_interrupts;
use embassy_time::{Duration, Timer}; use embassy_time::{Duration, Timer};
use embassy_sync::channel::Channel; use embassy_sync::channel::Channel;
@@ -16,6 +16,7 @@ use {defmt_rtt as _, panic_probe as _};
bind_interrupts!(struct Irqs { bind_interrupts!(struct Irqs {
USART1 => InterruptHandler<USART1>; USART1 => InterruptHandler<USART1>;
USART3 => InterruptHandler<USART3>;
}); });
static PIPE: Channel<CriticalSectionRawMutex, u8, 64> = Channel::new(); static PIPE: Channel<CriticalSectionRawMutex, u8, 64> = Channel::new();
@@ -29,7 +30,7 @@ async fn main(spawner: Spawner) {
let p = embassy_stm32::init(Default::default()); let p = embassy_stm32::init(Default::default());
let config = Config::default(); let config = Config::default();
let usart = Uart::new( let dev_usart = Uart::new(
p.USART1, p.USART1,
p.PA10, p.PA10,
p.PA9, p.PA9,
@@ -38,8 +39,19 @@ async fn main(spawner: Spawner) {
p.GPDMA1_CH1, // RX DMA p.GPDMA1_CH1, // RX DMA
config, config,
).unwrap(); ).unwrap();
let (mut tx, rx) = usart.split();
spawner.spawn(rx_task(rx)).unwrap(); let uart = Uart::new(
p.USART3,
p.PD9, // RX zo zariadenia
p.PD8, // TX do zariadenia
Irqs,
p.GPDMA1_CH2,
p.GPDMA1_CH3,
config,
).unwrap();
let (mut tx, rx) = uart.split();
let (dev_tx, dev_rx) = dev_usart.split();
spawner.spawn(rx_task(rx, dev_tx)).unwrap();
spawner.spawn(toggle_rec_task()).unwrap(); spawner.spawn(toggle_rec_task()).unwrap();
let sender = PIPE.sender(); let sender = PIPE.sender();
@@ -74,7 +86,10 @@ async fn main(spawner: Spawner) {
} }
#[embassy_executor::task] #[embassy_executor::task]
async fn rx_task(mut rx: UartRx<'static, embassy_stm32::mode::Async>) { async fn rx_task(
mut rx: UartRx<'static, embassy_stm32::mode::Async>,
mut pc_tx: UartTx<'static, embassy_stm32::mode::Async>
) {
let mut buf = [0u8; 1]; let mut buf = [0u8; 1];
loop { loop {
if rx.read(&mut buf).await.is_ok() { if rx.read(&mut buf).await.is_ok() {
@@ -89,6 +104,7 @@ async fn rx_task(mut rx: UartRx<'static, embassy_stm32::mode::Async>) {
} }
_ => {} _ => {}
} }
let _ = pc_tx.write(&buf).await;
} }
} }
} }