From 874af2e846f27c49241d43436c1a7aca80e17c11 Mon Sep 17 00:00:00 2001 From: Karl Palsson Date: Tue, 24 Oct 2017 23:56:10 +0000 Subject: [PATCH] stm32: usart: pull f3 code up to common v2 This is currently duplicated across f0 and f3 code. Pull up to the common -v2 code, so it can be used by both, as well as L0/L4/F7 --- lib/stm32/common/usart_common_v2.c | 77 ++++++++++++++++++++++++++++++ lib/stm32/f3/usart.c | 76 ----------------------------- 2 files changed, 77 insertions(+), 76 deletions(-) diff --git a/lib/stm32/common/usart_common_v2.c b/lib/stm32/common/usart_common_v2.c index dbf16a76..37eb5627 100644 --- a/lib/stm32/common/usart_common_v2.c +++ b/lib/stm32/common/usart_common_v2.c @@ -225,4 +225,81 @@ void usart_disable_rx_timeout_interrupt(uint32_t usart) USART_CR1(usart) &= ~USART_CR1_RTOIE; } +/*---------------------------------------------------------------------------*/ +/** @brief USART Send a Data Word. + * + * @param[in] usart unsigned 32 bit. USART block register address base @ref + * usart_reg_base + * @param[in] data unsigned 16 bit. + */ + +void usart_send(uint32_t usart, uint16_t data) +{ + /* Send data. */ + USART_TDR(usart) = (data & USART_TDR_MASK); +} + +/*---------------------------------------------------------------------------*/ +/** @brief USART Read a Received Data Word. + * + * If parity is enabled the MSB (bit 7 or 8 depending on the word length) is + * the parity bit. + * + * @param[in] usart unsigned 32 bit. USART block register address base @ref + * usart_reg_base + * @returns unsigned 16 bit data word. + */ + +uint16_t usart_recv(uint32_t usart) +{ + /* Receive data. */ + return USART_RDR(usart) & USART_RDR_MASK; +} + +/*---------------------------------------------------------------------------*/ +/** @brief USART Wait for Transmit Data Buffer Empty + * + * Blocks until the transmit data buffer becomes empty and is ready to accept + * the next data word. + * + * @param[in] usart unsigned 32 bit. USART block register address base @ref + * usart_reg_base + */ + +void usart_wait_send_ready(uint32_t usart) +{ + /* Wait until the data has been transferred into the shift register. */ + while ((USART_ISR(usart) & USART_ISR_TXE) == 0); +} + +/*---------------------------------------------------------------------------*/ +/** @brief USART Wait for Received Data Available + * + * Blocks until the receive data buffer holds a valid received data word. + * + * @param[in] usart unsigned 32 bit. USART block register address base @ref + * usart_reg_base + */ + +void usart_wait_recv_ready(uint32_t usart) +{ + /* Wait until the data is ready to be received. */ + while ((USART_ISR(usart) & USART_ISR_RXNE) == 0); +} + +/*---------------------------------------------------------------------------*/ +/** @brief USART Read a Status Flag. + * + * @param[in] usart unsigned 32 bit. USART block register address base @ref + * usart_reg_base + * @param[in] flag Unsigned int32. Status register flag @ref usart_sr_flags. + * @returns boolean: flag set. + */ + +bool usart_get_flag(uint32_t usart, uint32_t flag) +{ + return ((USART_ISR(usart) & flag) != 0); +} + + /**@}*/ diff --git a/lib/stm32/f3/usart.c b/lib/stm32/f3/usart.c index 456701dd..fbdc6465 100644 --- a/lib/stm32/f3/usart.c +++ b/lib/stm32/f3/usart.c @@ -30,81 +30,5 @@ #include -/*---------------------------------------------------------------------------*/ -/** @brief USART Send a Data Word. - * - * @param[in] usart unsigned 32 bit. USART block register address base @ref - * usart_reg_base - * @param[in] data unsigned 16 bit. - */ - -void usart_send(uint32_t usart, uint16_t data) -{ - /* Send data. */ - USART_TDR(usart) = (data & USART_TDR_MASK); -} - -/*---------------------------------------------------------------------------*/ -/** @brief USART Read a Received Data Word. - * - * If parity is enabled the MSB (bit 7 or 8 depending on the word length) is - * the parity bit. - * - * @param[in] usart unsigned 32 bit. USART block register address base @ref - * usart_reg_base - * @returns unsigned 16 bit data word. - */ - -uint16_t usart_recv(uint32_t usart) -{ - /* Receive data. */ - return USART_RDR(usart) & USART_RDR_MASK; -} - -/*---------------------------------------------------------------------------*/ -/** @brief USART Wait for Transmit Data Buffer Empty - * - * Blocks until the transmit data buffer becomes empty and is ready to accept - * the next data word. - * - * @param[in] usart unsigned 32 bit. USART block register address base @ref - * usart_reg_base - */ - -void usart_wait_send_ready(uint32_t usart) -{ - /* Wait until the data has been transferred into the shift register. */ - while ((USART_ISR(usart) & USART_ISR_TXE) == 0); -} - -/*---------------------------------------------------------------------------*/ -/** @brief USART Wait for Received Data Available - * - * Blocks until the receive data buffer holds a valid received data word. - * - * @param[in] usart unsigned 32 bit. USART block register address base @ref - * usart_reg_base - */ - -void usart_wait_recv_ready(uint32_t usart) -{ - /* Wait until the data is ready to be received. */ - while ((USART_ISR(usart) & USART_ISR_RXNE) == 0); -} - -/*---------------------------------------------------------------------------*/ -/** @brief USART Read a Status Flag. - * - * @param[in] usart unsigned 32 bit. USART block register address base @ref - * usart_reg_base - * @param[in] flag Unsigned int32. Status register flag @ref usart_sr_flags. - * @returns boolean: flag set. - */ - -bool usart_get_flag(uint32_t usart, uint32_t flag) -{ - return ((USART_ISR(usart) & flag) != 0); -} - /**@}*/