From 3218714d8c0d48e0ee0963419d030ee414ef4c75 Mon Sep 17 00:00:00 2001 From: Priec Date: Sun, 23 Nov 2025 15:54:20 +0100 Subject: [PATCH] software uart lib errors fixed --- semestralka_1_final_crate/software_uart/.gitignore | 1 + .../software_uart/src/gpio_dma_uart_rx.rs | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 semestralka_1_final_crate/software_uart/.gitignore diff --git a/semestralka_1_final_crate/software_uart/.gitignore b/semestralka_1_final_crate/software_uart/.gitignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/semestralka_1_final_crate/software_uart/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/semestralka_1_final_crate/software_uart/src/gpio_dma_uart_rx.rs b/semestralka_1_final_crate/software_uart/src/gpio_dma_uart_rx.rs index 60a9bb1..52536a2 100644 --- a/semestralka_1_final_crate/software_uart/src/gpio_dma_uart_rx.rs +++ b/semestralka_1_final_crate/software_uart/src/gpio_dma_uart_rx.rs @@ -5,15 +5,14 @@ use embassy_stm32::{ peripherals::GPDMA1_CH1, Peri, }; -use crate::config::RX_PIN_BIT; use embassy_stm32::dma::{ ReadableRingBuffer, TransferOptions, }; -use crate::config::{RX_OVERSAMPLE, UART_CFG}; use crate::decode_uart_samples; use embassy_sync::{blocking_mutex::raw::CriticalSectionRawMutex, pipe::Pipe}; use embassy_futures::yield_now; +use crate::UartConfig; use defmt::info; // datasheet tabulka 137 @@ -26,6 +25,9 @@ pub async fn rx_dma_task( register: *mut u8, ring: &'static mut [u8], pipe_rx: &'static Pipe, + rx_pin_bit: u8, + rx_oversample: u16, + uart_cfg: &'static UartConfig, ) { let mut opts = TransferOptions::default(); opts.half_transfer_ir = true; @@ -50,14 +52,14 @@ pub async fn rx_dma_task( let _ = rx.read_exact(&mut raw_chunk).await; for (i, b) in raw_chunk.iter().enumerate() { - level_buf[valid_len + i] = ((*b >> RX_PIN_BIT) & 1) as u8; + level_buf[valid_len + i] = ((*b >> rx_pin_bit) & 1) as u8; } let current_end = valid_len + CHUNK_SIZE; let (decoded, consumed) = decode_uart_samples( &level_buf[..current_end], - RX_OVERSAMPLE, - &UART_CFG + rx_oversample, + uart_cfg ); if !decoded.is_empty() {