mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Mon Sep 28 10:45:10 2015 +0100
Revision:
630:825f75ca301e
Parent:
441:d2c15dda23c1
Synchronized with git revision 54fbe4144faf309c37205a5d39fa665daa919f10

Full URL: https://github.com/mbedmicro/mbed/commit/54fbe4144faf309c37205a5d39fa665daa919f10/

NUCLEO_F031K6 : Add new target

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 340:28d1f895c6fe 1 /**
mbed_official 340:28d1f895c6fe 2 ******************************************************************************
mbed_official 340:28d1f895c6fe 3 * @file stm32f0xx_hal_uart_ex.h
mbed_official 340:28d1f895c6fe 4 * @author MCD Application Team
mbed_official 630:825f75ca301e 5 * @version V1.3.0
mbed_official 630:825f75ca301e 6 * @date 26-June-2015
mbed_official 340:28d1f895c6fe 7 * @brief Header file of UART HAL Extension module.
mbed_official 340:28d1f895c6fe 8 ******************************************************************************
mbed_official 340:28d1f895c6fe 9 * @attention
mbed_official 340:28d1f895c6fe 10 *
mbed_official 630:825f75ca301e 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 340:28d1f895c6fe 12 *
mbed_official 340:28d1f895c6fe 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 340:28d1f895c6fe 14 * are permitted provided that the following conditions are met:
mbed_official 340:28d1f895c6fe 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 340:28d1f895c6fe 16 * this list of conditions and the following disclaimer.
mbed_official 340:28d1f895c6fe 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 340:28d1f895c6fe 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 340:28d1f895c6fe 19 * and/or other materials provided with the distribution.
mbed_official 340:28d1f895c6fe 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 340:28d1f895c6fe 21 * may be used to endorse or promote products derived from this software
mbed_official 340:28d1f895c6fe 22 * without specific prior written permission.
mbed_official 340:28d1f895c6fe 23 *
mbed_official 340:28d1f895c6fe 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 340:28d1f895c6fe 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 340:28d1f895c6fe 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 340:28d1f895c6fe 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 340:28d1f895c6fe 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 340:28d1f895c6fe 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 340:28d1f895c6fe 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 340:28d1f895c6fe 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 340:28d1f895c6fe 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 340:28d1f895c6fe 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 340:28d1f895c6fe 34 *
mbed_official 630:825f75ca301e 35 ******************************************************************************
mbed_official 340:28d1f895c6fe 36 */
mbed_official 340:28d1f895c6fe 37
mbed_official 340:28d1f895c6fe 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 340:28d1f895c6fe 39 #ifndef __STM32F0xx_HAL_UART_EX_H
mbed_official 340:28d1f895c6fe 40 #define __STM32F0xx_HAL_UART_EX_H
mbed_official 340:28d1f895c6fe 41
mbed_official 340:28d1f895c6fe 42 #ifdef __cplusplus
mbed_official 340:28d1f895c6fe 43 extern "C" {
mbed_official 340:28d1f895c6fe 44 #endif
mbed_official 340:28d1f895c6fe 45
mbed_official 340:28d1f895c6fe 46 /* Includes ------------------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 47 #include "stm32f0xx_hal_def.h"
mbed_official 340:28d1f895c6fe 48
mbed_official 340:28d1f895c6fe 49 /** @addtogroup STM32F0xx_HAL_Driver
mbed_official 340:28d1f895c6fe 50 * @{
mbed_official 340:28d1f895c6fe 51 */
mbed_official 340:28d1f895c6fe 52
mbed_official 340:28d1f895c6fe 53 /** @addtogroup UARTEx
mbed_official 340:28d1f895c6fe 54 * @{
mbed_official 630:825f75ca301e 55 */
mbed_official 340:28d1f895c6fe 56
mbed_official 340:28d1f895c6fe 57 /* Exported types ------------------------------------------------------------*/
mbed_official 441:d2c15dda23c1 58 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 441:d2c15dda23c1 59 /** @defgroup UARTEx_Exported_Types UARTEx Exported Types
mbed_official 441:d2c15dda23c1 60 * @{
mbed_official 441:d2c15dda23c1 61 */
mbed_official 630:825f75ca301e 62
mbed_official 630:825f75ca301e 63 /**
mbed_official 630:825f75ca301e 64 * @brief UART wake up from stop mode parameters
mbed_official 630:825f75ca301e 65 */
mbed_official 630:825f75ca301e 66 typedef struct
mbed_official 441:d2c15dda23c1 67 {
mbed_official 441:d2c15dda23c1 68 uint32_t WakeUpEvent; /*!< Specifies which event will activat the Wakeup from Stop mode flag (WUF).
mbed_official 441:d2c15dda23c1 69 This parameter can be a value of @ref UART_WakeUp_from_Stop_Selection.
mbed_official 441:d2c15dda23c1 70 If set to UART_WAKEUP_ON_ADDRESS, the two other fields below must
mbed_official 441:d2c15dda23c1 71 be filled up. */
mbed_official 630:825f75ca301e 72
mbed_official 441:d2c15dda23c1 73 uint16_t AddressLength; /*!< Specifies whether the address is 4 or 7-bit long.
mbed_official 441:d2c15dda23c1 74 This parameter can be a value of @ref UART_WakeUp_Address_Length */
mbed_official 630:825f75ca301e 75
mbed_official 441:d2c15dda23c1 76 uint8_t Address; /*!< UART/USART node address (7-bit long max) */
mbed_official 441:d2c15dda23c1 77 } UART_WakeUpTypeDef;
mbed_official 630:825f75ca301e 78
mbed_official 441:d2c15dda23c1 79 /**
mbed_official 441:d2c15dda23c1 80 * @}
mbed_official 441:d2c15dda23c1 81 */
mbed_official 441:d2c15dda23c1 82 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 441:d2c15dda23c1 83
mbed_official 340:28d1f895c6fe 84 /* Exported constants --------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 85 /** @defgroup UARTEx_Exported_Constants UARTEx Exported Constants
mbed_official 340:28d1f895c6fe 86 * @{
mbed_official 340:28d1f895c6fe 87 */
mbed_official 630:825f75ca301e 88
mbed_official 340:28d1f895c6fe 89 /** @defgroup UARTEx_Word_Length UARTEx Word Length
mbed_official 340:28d1f895c6fe 90 * @{
mbed_official 340:28d1f895c6fe 91 */
mbed_official 441:d2c15dda23c1 92 #if defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 441:d2c15dda23c1 93 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 441:d2c15dda23c1 94 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC)
mbed_official 340:28d1f895c6fe 95 #define UART_WORDLENGTH_7B ((uint32_t)USART_CR1_M1)
mbed_official 340:28d1f895c6fe 96 #define UART_WORDLENGTH_8B ((uint32_t)0x00000000)
mbed_official 340:28d1f895c6fe 97 #define UART_WORDLENGTH_9B ((uint32_t)USART_CR1_M0)
mbed_official 340:28d1f895c6fe 98 #else
mbed_official 340:28d1f895c6fe 99 #define UART_WORDLENGTH_8B ((uint32_t)0x00000000)
mbed_official 340:28d1f895c6fe 100 #define UART_WORDLENGTH_9B ((uint32_t)USART_CR1_M)
mbed_official 441:d2c15dda23c1 101 #endif /* defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 441:d2c15dda23c1 102 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 441:d2c15dda23c1 103 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC) */
mbed_official 340:28d1f895c6fe 104 /**
mbed_official 340:28d1f895c6fe 105 * @}
mbed_official 340:28d1f895c6fe 106 */
mbed_official 340:28d1f895c6fe 107
mbed_official 340:28d1f895c6fe 108 /** @defgroup UARTEx_AutoBaud_Rate_Mode UARTEx Advanced Feature AutoBaud Rate Mode
mbed_official 340:28d1f895c6fe 109 * @{
mbed_official 340:28d1f895c6fe 110 */
mbed_official 441:d2c15dda23c1 111 #if defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 441:d2c15dda23c1 112 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 441:d2c15dda23c1 113 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC)
mbed_official 630:825f75ca301e 114 #define UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT ((uint32_t)0x00000000) /*!< Auto Baud rate detection on start bit */
mbed_official 630:825f75ca301e 115 #define UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE ((uint32_t)USART_CR2_ABRMODE_0) /*!< Auto Baud rate detection on falling edge */
mbed_official 630:825f75ca301e 116 #define UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME ((uint32_t)USART_CR2_ABRMODE_1) /*!< Auto Baud rate detection on 0x7F frame detection */
mbed_official 630:825f75ca301e 117 #define UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME ((uint32_t)USART_CR2_ABRMODE) /*!< Auto Baud rate detection on 0x55 frame detection */
mbed_official 340:28d1f895c6fe 118 #else
mbed_official 630:825f75ca301e 119 #define UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT ((uint32_t)0x00000000) /*!< Auto Baud rate detection on start bit */
mbed_official 630:825f75ca301e 120 #define UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE ((uint32_t)USART_CR2_ABRMODE_0) /*!< Auto Baud rate detection on falling edge */
mbed_official 441:d2c15dda23c1 121 #endif /* defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 441:d2c15dda23c1 122 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 441:d2c15dda23c1 123 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC) */
mbed_official 340:28d1f895c6fe 124 /**
mbed_official 340:28d1f895c6fe 125 * @}
mbed_official 340:28d1f895c6fe 126 */
mbed_official 340:28d1f895c6fe 127
mbed_official 441:d2c15dda23c1 128 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 129 /** @defgroup UARTEx_LIN UARTEx Local Interconnection Network mode
mbed_official 340:28d1f895c6fe 130 * @{
mbed_official 340:28d1f895c6fe 131 */
mbed_official 630:825f75ca301e 132 #define UART_LIN_DISABLE ((uint32_t)0x00000000) /*!< Local Interconnect Network disable */
mbed_official 630:825f75ca301e 133 #define UART_LIN_ENABLE ((uint32_t)USART_CR2_LINEN) /*!< Local Interconnect Network enable */
mbed_official 340:28d1f895c6fe 134 /**
mbed_official 340:28d1f895c6fe 135 * @}
mbed_official 340:28d1f895c6fe 136 */
mbed_official 340:28d1f895c6fe 137
mbed_official 340:28d1f895c6fe 138 /** @defgroup UARTEx_LIN_Break_Detection UARTEx LIN Break Detection
mbed_official 340:28d1f895c6fe 139 * @{
mbed_official 340:28d1f895c6fe 140 */
mbed_official 630:825f75ca301e 141 #define UART_LINBREAKDETECTLENGTH_10B ((uint32_t)0x00000000) /*!< LIN 10-bit break detection length */
mbed_official 630:825f75ca301e 142 #define UART_LINBREAKDETECTLENGTH_11B ((uint32_t)USART_CR2_LBDL) /*!< LIN 11-bit break detection length */
mbed_official 340:28d1f895c6fe 143 /**
mbed_official 340:28d1f895c6fe 144 * @}
mbed_official 340:28d1f895c6fe 145 */
mbed_official 441:d2c15dda23c1 146 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 147
mbed_official 340:28d1f895c6fe 148 /** @defgroup UART_Flags UARTEx Status Flags
mbed_official 340:28d1f895c6fe 149 * Elements values convention: 0xXXXX
mbed_official 340:28d1f895c6fe 150 * - 0xXXXX : Flag mask in the ISR register
mbed_official 340:28d1f895c6fe 151 * @{
mbed_official 340:28d1f895c6fe 152 */
mbed_official 630:825f75ca301e 153 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 154 #define UART_FLAG_REACK ((uint32_t)0x00400000)
mbed_official 630:825f75ca301e 155 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 156 #define UART_FLAG_TEACK ((uint32_t)0x00200000)
mbed_official 441:d2c15dda23c1 157 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 158 #define UART_FLAG_WUF ((uint32_t)0x00100000)
mbed_official 441:d2c15dda23c1 159 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 160 #define UART_FLAG_RWU ((uint32_t)0x00080000)
mbed_official 340:28d1f895c6fe 161 #define UART_FLAG_SBKF ((uint32_t)0x00040000
mbed_official 340:28d1f895c6fe 162 #define UART_FLAG_CMF ((uint32_t)0x00020000)
mbed_official 340:28d1f895c6fe 163 #define UART_FLAG_BUSY ((uint32_t)0x00010000)
mbed_official 340:28d1f895c6fe 164 #define UART_FLAG_ABRF ((uint32_t)0x00008000)
mbed_official 340:28d1f895c6fe 165 #define UART_FLAG_ABRE ((uint32_t)0x00004000)
mbed_official 630:825f75ca301e 166 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 167 #define UART_FLAG_EOBF ((uint32_t)0x00001000)
mbed_official 630:825f75ca301e 168 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 169 #define UART_FLAG_RTOF ((uint32_t)0x00000800)
mbed_official 340:28d1f895c6fe 170 #define UART_FLAG_CTS ((uint32_t)0x00000400)
mbed_official 340:28d1f895c6fe 171 #define UART_FLAG_CTSIF ((uint32_t)0x00000200)
mbed_official 441:d2c15dda23c1 172 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 173 #define UART_FLAG_LBDF ((uint32_t)0x00000100)
mbed_official 441:d2c15dda23c1 174 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 175 #define UART_FLAG_TXE ((uint32_t)0x00000080)
mbed_official 340:28d1f895c6fe 176 #define UART_FLAG_TC ((uint32_t)0x00000040)
mbed_official 340:28d1f895c6fe 177 #define UART_FLAG_RXNE ((uint32_t)0x00000020)
mbed_official 340:28d1f895c6fe 178 #define UART_FLAG_IDLE ((uint32_t)0x00000010)
mbed_official 340:28d1f895c6fe 179 #define UART_FLAG_ORE ((uint32_t)0x00000008)
mbed_official 340:28d1f895c6fe 180 #define UART_FLAG_NE ((uint32_t)0x00000004)
mbed_official 340:28d1f895c6fe 181 #define UART_FLAG_FE ((uint32_t)0x00000002)
mbed_official 340:28d1f895c6fe 182 #define UART_FLAG_PE ((uint32_t)0x00000001)
mbed_official 340:28d1f895c6fe 183 /**
mbed_official 340:28d1f895c6fe 184 * @}
mbed_official 340:28d1f895c6fe 185 */
mbed_official 340:28d1f895c6fe 186
mbed_official 340:28d1f895c6fe 187 /** @defgroup UART_Interrupt_definition UARTEx Interrupts Definition
mbed_official 441:d2c15dda23c1 188 * Elements values convention: 0000ZZZZZ0XXYYYYYb
mbed_official 340:28d1f895c6fe 189 * - YYYYY : Interrupt source position in the XX register (5bits)
mbed_official 340:28d1f895c6fe 190 * - XX : Interrupt source register (2bits)
mbed_official 340:28d1f895c6fe 191 * - 01: CR1 register
mbed_official 340:28d1f895c6fe 192 * - 10: CR2 register
mbed_official 340:28d1f895c6fe 193 * - 11: CR3 register
mbed_official 441:d2c15dda23c1 194 * - ZZZZZ : Flag position in the ISR register(5bits)
mbed_official 340:28d1f895c6fe 195 * @{
mbed_official 340:28d1f895c6fe 196 */
mbed_official 340:28d1f895c6fe 197 #define UART_IT_PE ((uint16_t)0x0028)
mbed_official 340:28d1f895c6fe 198 #define UART_IT_TXE ((uint16_t)0x0727)
mbed_official 340:28d1f895c6fe 199 #define UART_IT_TC ((uint16_t)0x0626)
mbed_official 340:28d1f895c6fe 200 #define UART_IT_RXNE ((uint16_t)0x0525)
mbed_official 340:28d1f895c6fe 201 #define UART_IT_IDLE ((uint16_t)0x0424)
mbed_official 441:d2c15dda23c1 202 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 203 #define UART_IT_LBD ((uint16_t)0x0846)
mbed_official 441:d2c15dda23c1 204 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 205 #define UART_IT_CTS ((uint16_t)0x096A)
mbed_official 441:d2c15dda23c1 206 #define UART_IT_CM ((uint16_t)0x112E)
mbed_official 441:d2c15dda23c1 207 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 208 #define UART_IT_WUF ((uint16_t)0x1476)
mbed_official 441:d2c15dda23c1 209 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 210 /**
mbed_official 340:28d1f895c6fe 211 * @}
mbed_official 340:28d1f895c6fe 212 */
mbed_official 340:28d1f895c6fe 213
mbed_official 340:28d1f895c6fe 214
mbed_official 340:28d1f895c6fe 215 /** @defgroup UART_IT_CLEAR_Flags UARTEx Interruption Clear Flags
mbed_official 340:28d1f895c6fe 216 * @{
mbed_official 340:28d1f895c6fe 217 */
mbed_official 340:28d1f895c6fe 218 #define UART_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */
mbed_official 340:28d1f895c6fe 219 #define UART_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */
mbed_official 340:28d1f895c6fe 220 #define UART_CLEAR_NEF USART_ICR_NCF /*!< Noise detected Clear Flag */
mbed_official 340:28d1f895c6fe 221 #define UART_CLEAR_OREF USART_ICR_ORECF /*!< OverRun Error Clear Flag */
mbed_official 340:28d1f895c6fe 222 #define UART_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */
mbed_official 340:28d1f895c6fe 223 #define UART_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */
mbed_official 441:d2c15dda23c1 224 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 225 #define UART_CLEAR_LBDF USART_ICR_LBDCF /*!< LIN Break Detection Clear Flag (not available on F030xx devices)*/
mbed_official 441:d2c15dda23c1 226 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 227 #define UART_CLEAR_CTSF USART_ICR_CTSCF /*!< CTS Interrupt Clear Flag */
mbed_official 340:28d1f895c6fe 228 #define UART_CLEAR_RTOF USART_ICR_RTOCF /*!< Receiver Time Out Clear Flag */
mbed_official 630:825f75ca301e 229 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 230 #define UART_CLEAR_EOBF USART_ICR_EOBCF /*!< End Of Block Clear Flag */
mbed_official 630:825f75ca301e 231 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 232 #define UART_CLEAR_CMF USART_ICR_CMCF /*!< Character Match Clear Flag */
mbed_official 441:d2c15dda23c1 233 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 234 #define UART_CLEAR_WUF USART_ICR_WUCF /*!< Wake Up from stop mode Clear Flag */
mbed_official 441:d2c15dda23c1 235 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 236 /**
mbed_official 340:28d1f895c6fe 237 * @}
mbed_official 340:28d1f895c6fe 238 */
mbed_official 340:28d1f895c6fe 239
mbed_official 340:28d1f895c6fe 240 /** @defgroup UART_Request_Parameters UARTEx Request Parameters
mbed_official 340:28d1f895c6fe 241 * @{
mbed_official 340:28d1f895c6fe 242 */
mbed_official 340:28d1f895c6fe 243 #define UART_AUTOBAUD_REQUEST ((uint32_t)USART_RQR_ABRRQ) /*!< Auto-Baud Rate Request */
mbed_official 340:28d1f895c6fe 244 #define UART_SENDBREAK_REQUEST ((uint32_t)USART_RQR_SBKRQ) /*!< Send Break Request */
mbed_official 340:28d1f895c6fe 245 #define UART_MUTE_MODE_REQUEST ((uint32_t)USART_RQR_MMRQ) /*!< Mute Mode Request */
mbed_official 340:28d1f895c6fe 246 #define UART_RXDATA_FLUSH_REQUEST ((uint32_t)USART_RQR_RXFRQ) /*!< Receive Data flush Request */
mbed_official 630:825f75ca301e 247 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 248 #define UART_TXDATA_FLUSH_REQUEST ((uint32_t)USART_RQR_TXFRQ) /*!< Transmit data flush Request */
mbed_official 340:28d1f895c6fe 249 #else
mbed_official 630:825f75ca301e 250 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 251 /**
mbed_official 340:28d1f895c6fe 252 * @}
mbed_official 340:28d1f895c6fe 253 */
mbed_official 630:825f75ca301e 254
mbed_official 441:d2c15dda23c1 255 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 256 /** @defgroup UART_Stop_Mode_Enable UARTEx Advanced Feature Stop Mode Enable
mbed_official 340:28d1f895c6fe 257 * @{
mbed_official 340:28d1f895c6fe 258 */
mbed_official 630:825f75ca301e 259 #define UART_ADVFEATURE_STOPMODE_DISABLE ((uint32_t)0x00000000) /*!< UART stop mode disable */
mbed_official 630:825f75ca301e 260 #define UART_ADVFEATURE_STOPMODE_ENABLE ((uint32_t)USART_CR1_UESM) /*!< UART stop mode enable */
mbed_official 340:28d1f895c6fe 261 /**
mbed_official 340:28d1f895c6fe 262 * @}
mbed_official 340:28d1f895c6fe 263 */
mbed_official 630:825f75ca301e 264
mbed_official 340:28d1f895c6fe 265 /** @defgroup UART_WakeUp_from_Stop_Selection UART WakeUp From Stop Selection
mbed_official 340:28d1f895c6fe 266 * @{
mbed_official 340:28d1f895c6fe 267 */
mbed_official 630:825f75ca301e 268 #define UART_WAKEUP_ON_ADDRESS ((uint32_t)0x00000000) /*!< UART wake-up on address */
mbed_official 630:825f75ca301e 269 #define UART_WAKEUP_ON_STARTBIT ((uint32_t)USART_CR3_WUS_1) /*!< UART wake-up on start bit */
mbed_official 630:825f75ca301e 270 #define UART_WAKEUP_ON_READDATA_NONEMPTY ((uint32_t)USART_CR3_WUS) /*!< UART wake-up on receive data register not empty */
mbed_official 340:28d1f895c6fe 271 /**
mbed_official 340:28d1f895c6fe 272 * @}
mbed_official 630:825f75ca301e 273 */
mbed_official 441:d2c15dda23c1 274 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 630:825f75ca301e 275
mbed_official 340:28d1f895c6fe 276 /**
mbed_official 340:28d1f895c6fe 277 * @}
mbed_official 630:825f75ca301e 278 */
mbed_official 340:28d1f895c6fe 279
mbed_official 630:825f75ca301e 280 /* Exported macros ------------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 281 /** @defgroup UARTEx_Exported_Macros UARTEx Exported Macros
mbed_official 340:28d1f895c6fe 282 * @{
mbed_official 340:28d1f895c6fe 283 */
mbed_official 340:28d1f895c6fe 284
mbed_official 630:825f75ca301e 285 /** @brief Flush the UART Data registers.
mbed_official 630:825f75ca301e 286 * @param __HANDLE__: specifies the UART Handle.
mbed_official 630:825f75ca301e 287 * @retval None
mbed_official 630:825f75ca301e 288 */
mbed_official 630:825f75ca301e 289 #if !defined(STM32F030x6) && !defined(STM32F030x8)
mbed_official 630:825f75ca301e 290 #define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \
mbed_official 630:825f75ca301e 291 do{ \
mbed_official 630:825f75ca301e 292 SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \
mbed_official 630:825f75ca301e 293 SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \
mbed_official 630:825f75ca301e 294 } while(0)
mbed_official 630:825f75ca301e 295 #else
mbed_official 630:825f75ca301e 296 #define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \
mbed_official 630:825f75ca301e 297 do{ \
mbed_official 630:825f75ca301e 298 SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \
mbed_official 630:825f75ca301e 299 } while(0)
mbed_official 630:825f75ca301e 300 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) */
mbed_official 630:825f75ca301e 301
mbed_official 630:825f75ca301e 302 /**
mbed_official 630:825f75ca301e 303 * @}
mbed_official 630:825f75ca301e 304 */
mbed_official 630:825f75ca301e 305
mbed_official 630:825f75ca301e 306 /* Private macros ------------------------------------------------------------*/
mbed_official 630:825f75ca301e 307 /** @defgroup UARTEx_Private_Macros UARTEx Private Macros
mbed_official 630:825f75ca301e 308 * @{
mbed_official 630:825f75ca301e 309 */
mbed_official 630:825f75ca301e 310
mbed_official 630:825f75ca301e 311 /** @brief Report the UART clock source.
mbed_official 630:825f75ca301e 312 * @param __HANDLE__: specifies the UART Handle.
mbed_official 630:825f75ca301e 313 * @param __CLOCKSOURCE__: output variable.
mbed_official 340:28d1f895c6fe 314 * @retval UART clocking source, written in __CLOCKSOURCE__.
mbed_official 340:28d1f895c6fe 315 */
mbed_official 340:28d1f895c6fe 316
mbed_official 340:28d1f895c6fe 317
mbed_official 340:28d1f895c6fe 318 #if defined(STM32F030x6) || defined(STM32F031x6) || defined(STM32F038xx)
mbed_official 630:825f75ca301e 319 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
mbed_official 340:28d1f895c6fe 320 do { \
mbed_official 340:28d1f895c6fe 321 switch(__HAL_RCC_GET_USART1_SOURCE()) \
mbed_official 340:28d1f895c6fe 322 { \
mbed_official 340:28d1f895c6fe 323 case RCC_USART1CLKSOURCE_PCLK1: \
mbed_official 340:28d1f895c6fe 324 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 325 break; \
mbed_official 340:28d1f895c6fe 326 case RCC_USART1CLKSOURCE_HSI: \
mbed_official 340:28d1f895c6fe 327 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 340:28d1f895c6fe 328 break; \
mbed_official 340:28d1f895c6fe 329 case RCC_USART1CLKSOURCE_SYSCLK: \
mbed_official 340:28d1f895c6fe 330 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 340:28d1f895c6fe 331 break; \
mbed_official 340:28d1f895c6fe 332 case RCC_USART1CLKSOURCE_LSE: \
mbed_official 340:28d1f895c6fe 333 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 340:28d1f895c6fe 334 break; \
mbed_official 340:28d1f895c6fe 335 default: \
mbed_official 340:28d1f895c6fe 336 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 337 break; \
mbed_official 340:28d1f895c6fe 338 } \
mbed_official 340:28d1f895c6fe 339 } while(0)
mbed_official 441:d2c15dda23c1 340 #elif defined (STM32F030x8) || defined (STM32F070x6) || \
mbed_official 340:28d1f895c6fe 341 defined (STM32F042x6) || defined (STM32F048xx) || \
mbed_official 340:28d1f895c6fe 342 defined (STM32F051x8) || defined (STM32F058xx)
mbed_official 630:825f75ca301e 343 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
mbed_official 340:28d1f895c6fe 344 do { \
mbed_official 340:28d1f895c6fe 345 if((__HANDLE__)->Instance == USART1) \
mbed_official 340:28d1f895c6fe 346 { \
mbed_official 340:28d1f895c6fe 347 switch(__HAL_RCC_GET_USART1_SOURCE()) \
mbed_official 340:28d1f895c6fe 348 { \
mbed_official 340:28d1f895c6fe 349 case RCC_USART1CLKSOURCE_PCLK1: \
mbed_official 340:28d1f895c6fe 350 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 351 break; \
mbed_official 340:28d1f895c6fe 352 case RCC_USART1CLKSOURCE_HSI: \
mbed_official 340:28d1f895c6fe 353 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 340:28d1f895c6fe 354 break; \
mbed_official 340:28d1f895c6fe 355 case RCC_USART1CLKSOURCE_SYSCLK: \
mbed_official 340:28d1f895c6fe 356 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 340:28d1f895c6fe 357 break; \
mbed_official 340:28d1f895c6fe 358 case RCC_USART1CLKSOURCE_LSE: \
mbed_official 340:28d1f895c6fe 359 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 340:28d1f895c6fe 360 break; \
mbed_official 340:28d1f895c6fe 361 default: \
mbed_official 340:28d1f895c6fe 362 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 363 break; \
mbed_official 340:28d1f895c6fe 364 } \
mbed_official 340:28d1f895c6fe 365 } \
mbed_official 340:28d1f895c6fe 366 else if((__HANDLE__)->Instance == USART2) \
mbed_official 340:28d1f895c6fe 367 { \
mbed_official 340:28d1f895c6fe 368 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 369 } \
mbed_official 340:28d1f895c6fe 370 else \
mbed_official 340:28d1f895c6fe 371 { \
mbed_official 340:28d1f895c6fe 372 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 373 } \
mbed_official 340:28d1f895c6fe 374 } while(0)
mbed_official 441:d2c15dda23c1 375 #elif defined(STM32F070xB)
mbed_official 630:825f75ca301e 376 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
mbed_official 441:d2c15dda23c1 377 do { \
mbed_official 441:d2c15dda23c1 378 if((__HANDLE__)->Instance == USART1) \
mbed_official 441:d2c15dda23c1 379 { \
mbed_official 441:d2c15dda23c1 380 switch(__HAL_RCC_GET_USART1_SOURCE()) \
mbed_official 441:d2c15dda23c1 381 { \
mbed_official 441:d2c15dda23c1 382 case RCC_USART1CLKSOURCE_PCLK1: \
mbed_official 441:d2c15dda23c1 383 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 384 break; \
mbed_official 441:d2c15dda23c1 385 case RCC_USART1CLKSOURCE_HSI: \
mbed_official 441:d2c15dda23c1 386 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 441:d2c15dda23c1 387 break; \
mbed_official 441:d2c15dda23c1 388 case RCC_USART1CLKSOURCE_SYSCLK: \
mbed_official 441:d2c15dda23c1 389 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 441:d2c15dda23c1 390 break; \
mbed_official 441:d2c15dda23c1 391 case RCC_USART1CLKSOURCE_LSE: \
mbed_official 441:d2c15dda23c1 392 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 441:d2c15dda23c1 393 break; \
mbed_official 441:d2c15dda23c1 394 default: \
mbed_official 441:d2c15dda23c1 395 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 441:d2c15dda23c1 396 break; \
mbed_official 441:d2c15dda23c1 397 } \
mbed_official 441:d2c15dda23c1 398 } \
mbed_official 441:d2c15dda23c1 399 else if((__HANDLE__)->Instance == USART2) \
mbed_official 441:d2c15dda23c1 400 { \
mbed_official 441:d2c15dda23c1 401 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 402 } \
mbed_official 441:d2c15dda23c1 403 else if((__HANDLE__)->Instance == USART3) \
mbed_official 441:d2c15dda23c1 404 { \
mbed_official 441:d2c15dda23c1 405 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 406 } \
mbed_official 441:d2c15dda23c1 407 else if((__HANDLE__)->Instance == USART4) \
mbed_official 441:d2c15dda23c1 408 { \
mbed_official 441:d2c15dda23c1 409 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 410 } \
mbed_official 441:d2c15dda23c1 411 else \
mbed_official 441:d2c15dda23c1 412 { \
mbed_official 441:d2c15dda23c1 413 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 441:d2c15dda23c1 414 } \
mbed_official 441:d2c15dda23c1 415 } while(0)
mbed_official 340:28d1f895c6fe 416 #elif defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx)
mbed_official 630:825f75ca301e 417 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
mbed_official 340:28d1f895c6fe 418 do { \
mbed_official 340:28d1f895c6fe 419 if((__HANDLE__)->Instance == USART1) \
mbed_official 340:28d1f895c6fe 420 { \
mbed_official 340:28d1f895c6fe 421 switch(__HAL_RCC_GET_USART1_SOURCE()) \
mbed_official 340:28d1f895c6fe 422 { \
mbed_official 340:28d1f895c6fe 423 case RCC_USART1CLKSOURCE_PCLK1: \
mbed_official 340:28d1f895c6fe 424 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 425 break; \
mbed_official 340:28d1f895c6fe 426 case RCC_USART1CLKSOURCE_HSI: \
mbed_official 340:28d1f895c6fe 427 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 340:28d1f895c6fe 428 break; \
mbed_official 340:28d1f895c6fe 429 case RCC_USART1CLKSOURCE_SYSCLK: \
mbed_official 340:28d1f895c6fe 430 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 340:28d1f895c6fe 431 break; \
mbed_official 340:28d1f895c6fe 432 case RCC_USART1CLKSOURCE_LSE: \
mbed_official 340:28d1f895c6fe 433 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 340:28d1f895c6fe 434 break; \
mbed_official 340:28d1f895c6fe 435 default: \
mbed_official 340:28d1f895c6fe 436 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 437 break; \
mbed_official 340:28d1f895c6fe 438 } \
mbed_official 340:28d1f895c6fe 439 } \
mbed_official 340:28d1f895c6fe 440 else if((__HANDLE__)->Instance == USART2) \
mbed_official 340:28d1f895c6fe 441 { \
mbed_official 340:28d1f895c6fe 442 switch(__HAL_RCC_GET_USART2_SOURCE()) \
mbed_official 340:28d1f895c6fe 443 { \
mbed_official 340:28d1f895c6fe 444 case RCC_USART2CLKSOURCE_PCLK1: \
mbed_official 340:28d1f895c6fe 445 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 446 break; \
mbed_official 340:28d1f895c6fe 447 case RCC_USART2CLKSOURCE_HSI: \
mbed_official 340:28d1f895c6fe 448 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 340:28d1f895c6fe 449 break; \
mbed_official 340:28d1f895c6fe 450 case RCC_USART2CLKSOURCE_SYSCLK: \
mbed_official 340:28d1f895c6fe 451 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 340:28d1f895c6fe 452 break; \
mbed_official 340:28d1f895c6fe 453 case RCC_USART2CLKSOURCE_LSE: \
mbed_official 340:28d1f895c6fe 454 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 340:28d1f895c6fe 455 break; \
mbed_official 340:28d1f895c6fe 456 default: \
mbed_official 340:28d1f895c6fe 457 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 458 break; \
mbed_official 340:28d1f895c6fe 459 } \
mbed_official 340:28d1f895c6fe 460 } \
mbed_official 340:28d1f895c6fe 461 else if((__HANDLE__)->Instance == USART3) \
mbed_official 340:28d1f895c6fe 462 { \
mbed_official 340:28d1f895c6fe 463 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 464 } \
mbed_official 340:28d1f895c6fe 465 else if((__HANDLE__)->Instance == USART4) \
mbed_official 340:28d1f895c6fe 466 { \
mbed_official 340:28d1f895c6fe 467 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 468 } \
mbed_official 340:28d1f895c6fe 469 else \
mbed_official 340:28d1f895c6fe 470 { \
mbed_official 340:28d1f895c6fe 471 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 472 } \
mbed_official 340:28d1f895c6fe 473 } while(0)
mbed_official 340:28d1f895c6fe 474 #elif defined(STM32F091xC) || defined (STM32F098xx)
mbed_official 630:825f75ca301e 475 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
mbed_official 340:28d1f895c6fe 476 do { \
mbed_official 340:28d1f895c6fe 477 if((__HANDLE__)->Instance == USART1) \
mbed_official 340:28d1f895c6fe 478 { \
mbed_official 340:28d1f895c6fe 479 switch(__HAL_RCC_GET_USART1_SOURCE()) \
mbed_official 340:28d1f895c6fe 480 { \
mbed_official 340:28d1f895c6fe 481 case RCC_USART1CLKSOURCE_PCLK1: \
mbed_official 340:28d1f895c6fe 482 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 483 break; \
mbed_official 340:28d1f895c6fe 484 case RCC_USART1CLKSOURCE_HSI: \
mbed_official 340:28d1f895c6fe 485 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 340:28d1f895c6fe 486 break; \
mbed_official 340:28d1f895c6fe 487 case RCC_USART1CLKSOURCE_SYSCLK: \
mbed_official 340:28d1f895c6fe 488 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 340:28d1f895c6fe 489 break; \
mbed_official 340:28d1f895c6fe 490 case RCC_USART1CLKSOURCE_LSE: \
mbed_official 340:28d1f895c6fe 491 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 340:28d1f895c6fe 492 break; \
mbed_official 340:28d1f895c6fe 493 default: \
mbed_official 340:28d1f895c6fe 494 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 495 break; \
mbed_official 340:28d1f895c6fe 496 } \
mbed_official 340:28d1f895c6fe 497 } \
mbed_official 340:28d1f895c6fe 498 else if((__HANDLE__)->Instance == USART2) \
mbed_official 340:28d1f895c6fe 499 { \
mbed_official 340:28d1f895c6fe 500 switch(__HAL_RCC_GET_USART2_SOURCE()) \
mbed_official 340:28d1f895c6fe 501 { \
mbed_official 340:28d1f895c6fe 502 case RCC_USART2CLKSOURCE_PCLK1: \
mbed_official 340:28d1f895c6fe 503 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 504 break; \
mbed_official 340:28d1f895c6fe 505 case RCC_USART2CLKSOURCE_HSI: \
mbed_official 340:28d1f895c6fe 506 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 340:28d1f895c6fe 507 break; \
mbed_official 340:28d1f895c6fe 508 case RCC_USART2CLKSOURCE_SYSCLK: \
mbed_official 340:28d1f895c6fe 509 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 340:28d1f895c6fe 510 break; \
mbed_official 340:28d1f895c6fe 511 case RCC_USART2CLKSOURCE_LSE: \
mbed_official 340:28d1f895c6fe 512 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 340:28d1f895c6fe 513 break; \
mbed_official 340:28d1f895c6fe 514 default: \
mbed_official 340:28d1f895c6fe 515 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 516 break; \
mbed_official 340:28d1f895c6fe 517 } \
mbed_official 340:28d1f895c6fe 518 } \
mbed_official 340:28d1f895c6fe 519 else if((__HANDLE__)->Instance == USART3) \
mbed_official 340:28d1f895c6fe 520 { \
mbed_official 340:28d1f895c6fe 521 switch(__HAL_RCC_GET_USART3_SOURCE()) \
mbed_official 340:28d1f895c6fe 522 { \
mbed_official 340:28d1f895c6fe 523 case RCC_USART3CLKSOURCE_PCLK1: \
mbed_official 340:28d1f895c6fe 524 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 525 break; \
mbed_official 340:28d1f895c6fe 526 case RCC_USART3CLKSOURCE_HSI: \
mbed_official 340:28d1f895c6fe 527 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 340:28d1f895c6fe 528 break; \
mbed_official 340:28d1f895c6fe 529 case RCC_USART3CLKSOURCE_SYSCLK: \
mbed_official 340:28d1f895c6fe 530 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 340:28d1f895c6fe 531 break; \
mbed_official 340:28d1f895c6fe 532 case RCC_USART3CLKSOURCE_LSE: \
mbed_official 340:28d1f895c6fe 533 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 340:28d1f895c6fe 534 break; \
mbed_official 340:28d1f895c6fe 535 default: \
mbed_official 340:28d1f895c6fe 536 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 537 break; \
mbed_official 340:28d1f895c6fe 538 } \
mbed_official 340:28d1f895c6fe 539 } \
mbed_official 340:28d1f895c6fe 540 else if((__HANDLE__)->Instance == USART4) \
mbed_official 340:28d1f895c6fe 541 { \
mbed_official 340:28d1f895c6fe 542 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 543 } \
mbed_official 340:28d1f895c6fe 544 else if((__HANDLE__)->Instance == USART5) \
mbed_official 340:28d1f895c6fe 545 { \
mbed_official 340:28d1f895c6fe 546 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 547 } \
mbed_official 340:28d1f895c6fe 548 else if((__HANDLE__)->Instance == USART6) \
mbed_official 340:28d1f895c6fe 549 { \
mbed_official 340:28d1f895c6fe 550 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 551 } \
mbed_official 340:28d1f895c6fe 552 else if((__HANDLE__)->Instance == USART7) \
mbed_official 340:28d1f895c6fe 553 { \
mbed_official 340:28d1f895c6fe 554 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 555 } \
mbed_official 340:28d1f895c6fe 556 else if((__HANDLE__)->Instance == USART8) \
mbed_official 340:28d1f895c6fe 557 { \
mbed_official 340:28d1f895c6fe 558 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 340:28d1f895c6fe 559 } \
mbed_official 340:28d1f895c6fe 560 else \
mbed_official 340:28d1f895c6fe 561 { \
mbed_official 340:28d1f895c6fe 562 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 340:28d1f895c6fe 563 } \
mbed_official 340:28d1f895c6fe 564 } while(0)
mbed_official 441:d2c15dda23c1 565 #elif defined(STM32F030xC)
mbed_official 630:825f75ca301e 566 #define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
mbed_official 441:d2c15dda23c1 567 do { \
mbed_official 441:d2c15dda23c1 568 if((__HANDLE__)->Instance == USART1) \
mbed_official 441:d2c15dda23c1 569 { \
mbed_official 441:d2c15dda23c1 570 switch(__HAL_RCC_GET_USART1_SOURCE()) \
mbed_official 441:d2c15dda23c1 571 { \
mbed_official 441:d2c15dda23c1 572 case RCC_USART1CLKSOURCE_PCLK1: \
mbed_official 441:d2c15dda23c1 573 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 574 break; \
mbed_official 441:d2c15dda23c1 575 case RCC_USART1CLKSOURCE_HSI: \
mbed_official 441:d2c15dda23c1 576 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_HSI; \
mbed_official 441:d2c15dda23c1 577 break; \
mbed_official 441:d2c15dda23c1 578 case RCC_USART1CLKSOURCE_SYSCLK: \
mbed_official 441:d2c15dda23c1 579 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_SYSCLK; \
mbed_official 441:d2c15dda23c1 580 break; \
mbed_official 441:d2c15dda23c1 581 case RCC_USART1CLKSOURCE_LSE: \
mbed_official 441:d2c15dda23c1 582 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_LSE; \
mbed_official 441:d2c15dda23c1 583 break; \
mbed_official 441:d2c15dda23c1 584 default: \
mbed_official 441:d2c15dda23c1 585 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 441:d2c15dda23c1 586 break; \
mbed_official 441:d2c15dda23c1 587 } \
mbed_official 441:d2c15dda23c1 588 } \
mbed_official 441:d2c15dda23c1 589 else if((__HANDLE__)->Instance == USART2) \
mbed_official 441:d2c15dda23c1 590 { \
mbed_official 441:d2c15dda23c1 591 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 592 } \
mbed_official 441:d2c15dda23c1 593 else if((__HANDLE__)->Instance == USART3) \
mbed_official 441:d2c15dda23c1 594 { \
mbed_official 441:d2c15dda23c1 595 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 596 } \
mbed_official 441:d2c15dda23c1 597 else if((__HANDLE__)->Instance == USART4) \
mbed_official 441:d2c15dda23c1 598 { \
mbed_official 441:d2c15dda23c1 599 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 600 } \
mbed_official 441:d2c15dda23c1 601 else if((__HANDLE__)->Instance == USART5) \
mbed_official 441:d2c15dda23c1 602 { \
mbed_official 441:d2c15dda23c1 603 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 604 } \
mbed_official 441:d2c15dda23c1 605 else if((__HANDLE__)->Instance == USART6) \
mbed_official 441:d2c15dda23c1 606 { \
mbed_official 441:d2c15dda23c1 607 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
mbed_official 441:d2c15dda23c1 608 } \
mbed_official 441:d2c15dda23c1 609 else \
mbed_official 441:d2c15dda23c1 610 { \
mbed_official 441:d2c15dda23c1 611 (__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
mbed_official 441:d2c15dda23c1 612 } \
mbed_official 441:d2c15dda23c1 613 } while(0)
mbed_official 340:28d1f895c6fe 614
mbed_official 340:28d1f895c6fe 615 #endif /* defined(STM32F030x6) || defined(STM32F031x6) || defined(STM32F038xx) */
mbed_official 340:28d1f895c6fe 616
mbed_official 340:28d1f895c6fe 617
mbed_official 630:825f75ca301e 618 /** @brief Compute the UART mask to apply to retrieve the received data
mbed_official 340:28d1f895c6fe 619 * according to the word length and to the parity bits activation.
mbed_official 630:825f75ca301e 620 * @note If PCE = 1, the parity bit is not included in the data extracted
mbed_official 340:28d1f895c6fe 621 * by the reception API().
mbed_official 340:28d1f895c6fe 622 * This masking operation is not carried out in the case of
mbed_official 630:825f75ca301e 623 * DMA transfers.
mbed_official 630:825f75ca301e 624 * @param __HANDLE__: specifies the UART Handle.
mbed_official 630:825f75ca301e 625 * @retval None, the mask to apply to UART RDR register is stored in (__HANDLE__)->Mask field.
mbed_official 630:825f75ca301e 626 */
mbed_official 441:d2c15dda23c1 627 #if defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 441:d2c15dda23c1 628 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 441:d2c15dda23c1 629 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC)
mbed_official 630:825f75ca301e 630 #define UART_MASK_COMPUTATION(__HANDLE__) \
mbed_official 340:28d1f895c6fe 631 do { \
mbed_official 340:28d1f895c6fe 632 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
mbed_official 340:28d1f895c6fe 633 { \
mbed_official 340:28d1f895c6fe 634 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
mbed_official 340:28d1f895c6fe 635 { \
mbed_official 340:28d1f895c6fe 636 (__HANDLE__)->Mask = 0x01FF ; \
mbed_official 340:28d1f895c6fe 637 } \
mbed_official 340:28d1f895c6fe 638 else \
mbed_official 340:28d1f895c6fe 639 { \
mbed_official 340:28d1f895c6fe 640 (__HANDLE__)->Mask = 0x00FF ; \
mbed_official 340:28d1f895c6fe 641 } \
mbed_official 340:28d1f895c6fe 642 } \
mbed_official 340:28d1f895c6fe 643 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
mbed_official 340:28d1f895c6fe 644 { \
mbed_official 340:28d1f895c6fe 645 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
mbed_official 340:28d1f895c6fe 646 { \
mbed_official 340:28d1f895c6fe 647 (__HANDLE__)->Mask = 0x00FF ; \
mbed_official 340:28d1f895c6fe 648 } \
mbed_official 340:28d1f895c6fe 649 else \
mbed_official 340:28d1f895c6fe 650 { \
mbed_official 340:28d1f895c6fe 651 (__HANDLE__)->Mask = 0x007F ; \
mbed_official 340:28d1f895c6fe 652 } \
mbed_official 340:28d1f895c6fe 653 } \
mbed_official 340:28d1f895c6fe 654 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \
mbed_official 340:28d1f895c6fe 655 { \
mbed_official 340:28d1f895c6fe 656 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
mbed_official 340:28d1f895c6fe 657 { \
mbed_official 340:28d1f895c6fe 658 (__HANDLE__)->Mask = 0x007F ; \
mbed_official 340:28d1f895c6fe 659 } \
mbed_official 340:28d1f895c6fe 660 else \
mbed_official 340:28d1f895c6fe 661 { \
mbed_official 340:28d1f895c6fe 662 (__HANDLE__)->Mask = 0x003F ; \
mbed_official 340:28d1f895c6fe 663 } \
mbed_official 340:28d1f895c6fe 664 } \
mbed_official 630:825f75ca301e 665 } while(0)
mbed_official 340:28d1f895c6fe 666 #else
mbed_official 630:825f75ca301e 667 #define UART_MASK_COMPUTATION(__HANDLE__) \
mbed_official 340:28d1f895c6fe 668 do { \
mbed_official 340:28d1f895c6fe 669 if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
mbed_official 340:28d1f895c6fe 670 { \
mbed_official 340:28d1f895c6fe 671 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
mbed_official 340:28d1f895c6fe 672 { \
mbed_official 340:28d1f895c6fe 673 (__HANDLE__)->Mask = 0x01FF ; \
mbed_official 340:28d1f895c6fe 674 } \
mbed_official 340:28d1f895c6fe 675 else \
mbed_official 340:28d1f895c6fe 676 { \
mbed_official 340:28d1f895c6fe 677 (__HANDLE__)->Mask = 0x00FF ; \
mbed_official 340:28d1f895c6fe 678 } \
mbed_official 340:28d1f895c6fe 679 } \
mbed_official 340:28d1f895c6fe 680 else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
mbed_official 340:28d1f895c6fe 681 { \
mbed_official 340:28d1f895c6fe 682 if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
mbed_official 340:28d1f895c6fe 683 { \
mbed_official 340:28d1f895c6fe 684 (__HANDLE__)->Mask = 0x00FF ; \
mbed_official 340:28d1f895c6fe 685 } \
mbed_official 340:28d1f895c6fe 686 else \
mbed_official 340:28d1f895c6fe 687 { \
mbed_official 340:28d1f895c6fe 688 (__HANDLE__)->Mask = 0x007F ; \
mbed_official 340:28d1f895c6fe 689 } \
mbed_official 340:28d1f895c6fe 690 } \
mbed_official 340:28d1f895c6fe 691 } while(0)
mbed_official 441:d2c15dda23c1 692 #endif /* defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 441:d2c15dda23c1 693 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 441:d2c15dda23c1 694 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC) */
mbed_official 630:825f75ca301e 695
mbed_official 630:825f75ca301e 696 /**
mbed_official 630:825f75ca301e 697 * @brief Ensure that UART frame length is valid.
mbed_official 630:825f75ca301e 698 * @param __LENGTH__: UART frame length.
mbed_official 630:825f75ca301e 699 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)
mbed_official 630:825f75ca301e 700 */
mbed_official 630:825f75ca301e 701 #if defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 630:825f75ca301e 702 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 630:825f75ca301e 703 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC)
mbed_official 630:825f75ca301e 704 #define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_7B) || \
mbed_official 630:825f75ca301e 705 ((__LENGTH__) == UART_WORDLENGTH_8B) || \
mbed_official 630:825f75ca301e 706 ((__LENGTH__) == UART_WORDLENGTH_9B))
mbed_official 630:825f75ca301e 707 #else
mbed_official 630:825f75ca301e 708 #define IS_UART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == UART_WORDLENGTH_8B) || \
mbed_official 630:825f75ca301e 709 ((__LENGTH__) == UART_WORDLENGTH_9B))
mbed_official 630:825f75ca301e 710 #endif /* defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 630:825f75ca301e 711 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 630:825f75ca301e 712 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC) */
mbed_official 630:825f75ca301e 713
mbed_official 630:825f75ca301e 714 /**
mbed_official 630:825f75ca301e 715 * @brief Ensure that UART auto Baud rate detection mode is valid.
mbed_official 630:825f75ca301e 716 * @param __MODE__: UART auto Baud rate detection mode.
mbed_official 630:825f75ca301e 717 * @retval SET (__MODE__ is valid) or RESET (__MODE__ is invalid)
mbed_official 630:825f75ca301e 718 */
mbed_official 630:825f75ca301e 719 #if defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 630:825f75ca301e 720 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 630:825f75ca301e 721 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC)
mbed_official 630:825f75ca301e 722 #define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(__MODE__) (((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT) || \
mbed_official 630:825f75ca301e 723 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE) || \
mbed_official 630:825f75ca301e 724 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X7FFRAME) || \
mbed_official 630:825f75ca301e 725 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ON0X55FRAME))
mbed_official 630:825f75ca301e 726 #else
mbed_official 630:825f75ca301e 727 #define IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(__MODE__) (((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONSTARTBIT) || \
mbed_official 630:825f75ca301e 728 ((__MODE__) == UART_ADVFEATURE_AUTOBAUDRATE_ONFALLINGEDGE))
mbed_official 630:825f75ca301e 729 #endif /* defined (STM32F042x6) || defined (STM32F048xx) || defined (STM32F070x6) || \
mbed_official 630:825f75ca301e 730 defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || defined (STM32F070xB) || \
mbed_official 630:825f75ca301e 731 defined (STM32F091xC) || defined (STM32F098xx) || defined (STM32F030xC) */
mbed_official 630:825f75ca301e 732
mbed_official 630:825f75ca301e 733
mbed_official 630:825f75ca301e 734 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 630:825f75ca301e 735 /**
mbed_official 630:825f75ca301e 736 * @brief Ensure that UART LIN state is valid.
mbed_official 630:825f75ca301e 737 * @param __LIN__: UART LIN state.
mbed_official 630:825f75ca301e 738 * @retval SET (__LIN__ is valid) or RESET (__LIN__ is invalid)
mbed_official 630:825f75ca301e 739 */
mbed_official 630:825f75ca301e 740 #define IS_UART_LIN(__LIN__) (((__LIN__) == UART_LIN_DISABLE) || \
mbed_official 630:825f75ca301e 741 ((__LIN__) == UART_LIN_ENABLE))
mbed_official 630:825f75ca301e 742
mbed_official 630:825f75ca301e 743 /**
mbed_official 630:825f75ca301e 744 * @brief Ensure that UART LIN break detection length is valid.
mbed_official 630:825f75ca301e 745 * @param __LENGTH__: UART LIN break detection length.
mbed_official 630:825f75ca301e 746 * @retval SET (__LENGTH__ is valid) or RESET (__LENGTH__ is invalid)
mbed_official 630:825f75ca301e 747 */
mbed_official 630:825f75ca301e 748 #define IS_UART_LIN_BREAK_DETECT_LENGTH(__LENGTH__) (((__LENGTH__) == UART_LINBREAKDETECTLENGTH_10B) || \
mbed_official 630:825f75ca301e 749 ((__LENGTH__) == UART_LINBREAKDETECTLENGTH_11B))
mbed_official 630:825f75ca301e 750 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 630:825f75ca301e 751
mbed_official 630:825f75ca301e 752 /**
mbed_official 630:825f75ca301e 753 * @brief Ensure that UART request parameter is valid.
mbed_official 630:825f75ca301e 754 * @param __PARAM__: UART request parameter.
mbed_official 630:825f75ca301e 755 * @retval SET (__PARAM__ is valid) or RESET (__PARAM__ is invalid)
mbed_official 630:825f75ca301e 756 */
mbed_official 630:825f75ca301e 757 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 630:825f75ca301e 758 #define IS_UART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == UART_AUTOBAUD_REQUEST) || \
mbed_official 630:825f75ca301e 759 ((__PARAM__) == UART_SENDBREAK_REQUEST) || \
mbed_official 630:825f75ca301e 760 ((__PARAM__) == UART_MUTE_MODE_REQUEST) || \
mbed_official 630:825f75ca301e 761 ((__PARAM__) == UART_RXDATA_FLUSH_REQUEST) || \
mbed_official 630:825f75ca301e 762 ((__PARAM__) == UART_TXDATA_FLUSH_REQUEST))
mbed_official 630:825f75ca301e 763 #else
mbed_official 630:825f75ca301e 764 #define IS_UART_REQUEST_PARAMETER(__PARAM__) (((__PARAM__) == UART_AUTOBAUD_REQUEST) || \
mbed_official 630:825f75ca301e 765 ((__PARAM__) == UART_SENDBREAK_REQUEST) || \
mbed_official 630:825f75ca301e 766 ((__PARAM__) == UART_MUTE_MODE_REQUEST) || \
mbed_official 630:825f75ca301e 767 ((__PARAM__) == UART_RXDATA_FLUSH_REQUEST))
mbed_official 630:825f75ca301e 768 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 630:825f75ca301e 769
mbed_official 630:825f75ca301e 770 #if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
mbed_official 630:825f75ca301e 771 /**
mbed_official 630:825f75ca301e 772 * @brief Ensure that UART stop mode state is valid.
mbed_official 630:825f75ca301e 773 * @param __STOPMODE__: UART stop mode state.
mbed_official 630:825f75ca301e 774 * @retval SET (__STOPMODE__ is valid) or RESET (__STOPMODE__ is invalid)
mbed_official 630:825f75ca301e 775 */
mbed_official 630:825f75ca301e 776 #define IS_UART_ADVFEATURE_STOPMODE(__STOPMODE__) (((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_DISABLE) || \
mbed_official 630:825f75ca301e 777 ((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_ENABLE))
mbed_official 630:825f75ca301e 778
mbed_official 630:825f75ca301e 779 /**
mbed_official 630:825f75ca301e 780 * @brief Ensure that UART wake-up selection is valid.
mbed_official 630:825f75ca301e 781 * @param __WAKE__: UART wake-up selection.
mbed_official 630:825f75ca301e 782 * @retval SET (__WAKE__ is valid) or RESET (__WAKE__ is invalid)
mbed_official 630:825f75ca301e 783 */
mbed_official 630:825f75ca301e 784 #define IS_UART_WAKEUP_SELECTION(__WAKE__) (((__WAKE__) == UART_WAKEUP_ON_ADDRESS) || \
mbed_official 630:825f75ca301e 785 ((__WAKE__) == UART_WAKEUP_ON_STARTBIT) || \
mbed_official 630:825f75ca301e 786 ((__WAKE__) == UART_WAKEUP_ON_READDATA_NONEMPTY))
mbed_official 630:825f75ca301e 787 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC) */
mbed_official 630:825f75ca301e 788
mbed_official 340:28d1f895c6fe 789 /**
mbed_official 340:28d1f895c6fe 790 * @}
mbed_official 340:28d1f895c6fe 791 */
mbed_official 340:28d1f895c6fe 792
mbed_official 340:28d1f895c6fe 793 /* Exported functions --------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 794 /** @addtogroup UARTEx_Exported_Functions
mbed_official 340:28d1f895c6fe 795 * @{
mbed_official 340:28d1f895c6fe 796 */
mbed_official 340:28d1f895c6fe 797
mbed_official 340:28d1f895c6fe 798 /** @addtogroup UARTEx_Exported_Functions_Group1
mbed_official 340:28d1f895c6fe 799 * @brief Extended Initialization and Configuration Functions
mbed_official 340:28d1f895c6fe 800 * @{
mbed_official 340:28d1f895c6fe 801 */
mbed_official 340:28d1f895c6fe 802 /* Initialization and de-initialization functions ****************************/
mbed_official 630:825f75ca301e 803 HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t UART_DEPolarity, uint32_t UART_DEAssertionTime, uint32_t UART_DEDeassertionTime);
mbed_official 441:d2c15dda23c1 804 #if !defined(STM32F030x6) && !defined(STM32F030x8)&& !defined(STM32F070xB)&& !defined(STM32F070x6)&& !defined(STM32F030xC)
mbed_official 340:28d1f895c6fe 805 HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLength);
mbed_official 441:d2c15dda23c1 806 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8)&& !defined(STM32F070xB)&& !defined(STM32F070x6)&& !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 807 /**
mbed_official 340:28d1f895c6fe 808 * @}
mbed_official 340:28d1f895c6fe 809 */
mbed_official 340:28d1f895c6fe 810
mbed_official 340:28d1f895c6fe 811 /** @addtogroup UARTEx_Exported_Functions_Group2
mbed_official 441:d2c15dda23c1 812 * @brief Extended UART Interrupt handling function
mbed_official 340:28d1f895c6fe 813 * @{
mbed_official 340:28d1f895c6fe 814 */
mbed_official 630:825f75ca301e 815
mbed_official 441:d2c15dda23c1 816 /* IO operation functions ***************************************************/
mbed_official 441:d2c15dda23c1 817 #if !defined(STM32F030x6) && !defined(STM32F030x8)&& !defined(STM32F070xB)&& !defined(STM32F070x6)&& !defined(STM32F030xC)
mbed_official 630:825f75ca301e 818 void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart);
mbed_official 441:d2c15dda23c1 819 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8)&& !defined(STM32F070xB)&& !defined(STM32F070x6)&& !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 820 /**
mbed_official 340:28d1f895c6fe 821 * @}
mbed_official 340:28d1f895c6fe 822 */
mbed_official 340:28d1f895c6fe 823
mbed_official 340:28d1f895c6fe 824 /** @addtogroup UARTEx_Exported_Functions_Group3
mbed_official 340:28d1f895c6fe 825 * @brief Extended Peripheral Control functions
mbed_official 340:28d1f895c6fe 826 * @{
mbed_official 340:28d1f895c6fe 827 */
mbed_official 340:28d1f895c6fe 828
mbed_official 340:28d1f895c6fe 829 /* Peripheral Control functions **********************************************/
mbed_official 340:28d1f895c6fe 830 HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength);
mbed_official 441:d2c15dda23c1 831 #if !defined(STM32F030x6) && !defined(STM32F030x8)&& !defined(STM32F070xB)&& !defined(STM32F070x6) && !defined(STM32F030xC)
mbed_official 441:d2c15dda23c1 832 HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection);
mbed_official 441:d2c15dda23c1 833 HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart);
mbed_official 441:d2c15dda23c1 834 HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart);
mbed_official 340:28d1f895c6fe 835 HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart);
mbed_official 441:d2c15dda23c1 836 #endif /* !defined(STM32F030x6) && !defined(STM32F030x8)&& !defined(STM32F070xB)&& !defined(STM32F070x6)&& !defined(STM32F030xC) */
mbed_official 340:28d1f895c6fe 837 /**
mbed_official 340:28d1f895c6fe 838 * @}
mbed_official 340:28d1f895c6fe 839 */
mbed_official 340:28d1f895c6fe 840 /* Peripheral State functions ************************************************/
mbed_official 340:28d1f895c6fe 841
mbed_official 340:28d1f895c6fe 842 /**
mbed_official 340:28d1f895c6fe 843 * @}
mbed_official 630:825f75ca301e 844 */
mbed_official 340:28d1f895c6fe 845
mbed_official 630:825f75ca301e 846 /* Private functions ---------------------------------------------------------*/
mbed_official 340:28d1f895c6fe 847
mbed_official 340:28d1f895c6fe 848 /**
mbed_official 340:28d1f895c6fe 849 * @}
mbed_official 630:825f75ca301e 850 */
mbed_official 340:28d1f895c6fe 851
mbed_official 340:28d1f895c6fe 852 /**
mbed_official 340:28d1f895c6fe 853 * @}
mbed_official 630:825f75ca301e 854 */
mbed_official 340:28d1f895c6fe 855
mbed_official 340:28d1f895c6fe 856 #ifdef __cplusplus
mbed_official 340:28d1f895c6fe 857 }
mbed_official 340:28d1f895c6fe 858 #endif
mbed_official 340:28d1f895c6fe 859
mbed_official 340:28d1f895c6fe 860 #endif /* __STM32F0xx_HAL_UART_EX_H */
mbed_official 340:28d1f895c6fe 861
mbed_official 340:28d1f895c6fe 862 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 340:28d1f895c6fe 863