clean code
This commit is contained in:
@@ -25,25 +25,6 @@ pub const TIM6_UP_REQ: Request = 4; // Table 137: tim6_upd_dma, strana 687 STM32
|
|||||||
|
|
||||||
static TX_RING: StaticCell<[u32; TX_RING_BYTES]> = StaticCell::new();
|
static TX_RING: StaticCell<[u32; TX_RING_BYTES]> = StaticCell::new();
|
||||||
|
|
||||||
use core::future::poll_fn;
|
|
||||||
use core::task::Poll;
|
|
||||||
|
|
||||||
async fn wait_for_space<'a, W: embassy_stm32::dma::word::Word>(
|
|
||||||
ring: &mut embassy_stm32::dma::WritableRingBuffer<'a, W>,
|
|
||||||
min_free: usize,
|
|
||||||
) {
|
|
||||||
poll_fn(|cx| {
|
|
||||||
let used = ring.len().unwrap_or(0);
|
|
||||||
let cap = ring.capacity();
|
|
||||||
if cap - used > min_free {
|
|
||||||
Poll::Ready(())
|
|
||||||
} else {
|
|
||||||
ring.set_waker(cx.waker());
|
|
||||||
Poll::Pending
|
|
||||||
}
|
|
||||||
}).await
|
|
||||||
}
|
|
||||||
|
|
||||||
#[embassy_executor::main]
|
#[embassy_executor::main]
|
||||||
async fn main(spawner: Spawner) {
|
async fn main(spawner: Spawner) {
|
||||||
let p = embassy_stm32::init(Default::default());
|
let p = embassy_stm32::init(Default::default());
|
||||||
@@ -87,10 +68,6 @@ async fn main(spawner: Spawner) {
|
|||||||
info!("tick end");
|
info!("tick end");
|
||||||
|
|
||||||
let used = encode_uart_frames(TX_PIN_BIT, b"Hello marshmallow\r\n", &mut frame_buf).await;
|
let used = encode_uart_frames(TX_PIN_BIT, b"Hello marshmallow\r\n", &mut frame_buf).await;
|
||||||
|
|
||||||
// Wait for DMA to free space, async style
|
|
||||||
wait_for_space(&mut tx_ring, used / 2).await;
|
|
||||||
|
|
||||||
if let Err(e) = tx_ring.write_exact(&frame_buf[..used]).await {
|
if let Err(e) = tx_ring.write_exact(&frame_buf[..used]).await {
|
||||||
warn!("DMA ring write error: {:?}", e);
|
warn!("DMA ring write error: {:?}", e);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user