From 477c410be413aac0ff88b583fd7efc7873ef4768 Mon Sep 17 00:00:00 2001 From: Fergus Noble Date: Tue, 31 Jan 2012 15:11:46 -0800 Subject: [PATCH] Added functions to enable and disable DMA from stm32 USART. --- include/libopencm3/stm32/usart.h | 4 ++++ lib/stm32/usart.c | 21 +++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/libopencm3/stm32/usart.h b/include/libopencm3/stm32/usart.h index df6bc089..cbf622c2 100644 --- a/include/libopencm3/stm32/usart.h +++ b/include/libopencm3/stm32/usart.h @@ -308,5 +308,9 @@ void usart_wait_send_ready(u32 usart); void usart_wait_recv_ready(u32 usart); void usart_send_blocking(u32 usart, u16 data); u16 usart_recv_blocking(u32 usart); +void usart_enable_rx_dma(u32 usart); +void usart_disable_rx_dma(u32 usart); +void usart_enable_tx_dma(u32 usart); +void usart_disable_tx_dma(u32 usart); #endif diff --git a/lib/stm32/usart.c b/lib/stm32/usart.c index a2c9f16c..7995a527 100644 --- a/lib/stm32/usart.c +++ b/lib/stm32/usart.c @@ -148,3 +148,24 @@ u16 usart_recv_blocking(u32 usart) return usart_recv(usart); } + +void usart_enable_rx_dma(u32 usart) +{ + USART_CR3(usart) |= USART_CR3_DMAR; +} + +void usart_disable_rx_dma(u32 usart) +{ + USART_CR3(usart) &= ~USART_CR3_DMAR; +} + +void usart_enable_tx_dma(u32 usart) +{ + USART_CR3(usart) |= USART_CR3_DMAT; +} + +void usart_disable_tx_dma(u32 usart) +{ + USART_CR3(usart) &= ~USART_CR3_DMAT; +} +