2 sem
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user