From 188671389dabc857450e84ebcd11b9b396ace218 Mon Sep 17 00:00:00 2001 From: dragonmux Date: Mon, 15 Aug 2022 17:58:34 +0100 Subject: [PATCH] stm32/usart: Implemented a function to get the current parity setting for a USART --- .../libopencm3/stm32/common/usart_common_all.h | 1 + lib/stm32/common/usart_common_all.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/libopencm3/stm32/common/usart_common_all.h b/include/libopencm3/stm32/common/usart_common_all.h index c41a2267..cb034cd9 100644 --- a/include/libopencm3/stm32/common/usart_common_all.h +++ b/include/libopencm3/stm32/common/usart_common_all.h @@ -104,6 +104,7 @@ uint32_t usart_get_databits(uint32_t usart); void usart_set_stopbits(uint32_t usart, uint32_t stopbits); uint32_t usart_get_stopbits(uint32_t usart); void usart_set_parity(uint32_t usart, uint32_t parity); +uint32_t usart_get_parity(uint32_t usart); void usart_set_mode(uint32_t usart, uint32_t mode); void usart_set_flow_control(uint32_t usart, uint32_t flowcontrol); void usart_enable(uint32_t usart); diff --git a/lib/stm32/common/usart_common_all.c b/lib/stm32/common/usart_common_all.c index 49e1f20b..93d44978 100644 --- a/lib/stm32/common/usart_common_all.c +++ b/lib/stm32/common/usart_common_all.c @@ -170,6 +170,22 @@ void usart_set_parity(uint32_t usart, uint32_t parity) USART_CR1(usart) = reg32; } +/*---------------------------------------------------------------------------*/ +/** @brief USART Get Parity. + +The stop bits are specified as 0.5, 1, 1.5 or 2. + +@param[in] usart unsigned 32 bit. USART block register address base @ref +usart_reg_base +@returns unsigned 32 bit Parity @ref usart_cr2_stopbits. +*/ + +uint32_t usart_get_parity(uint32_t usart) +{ + const uint32_t reg32 = USART_CR1(usart); + return reg32 & USART_PARITY_MASK; +} + /*---------------------------------------------------------------------------*/ /** @brief USART Set Rx/Tx Mode.