mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_STM/TARGET_STM32L0/device/stm32l0xx_hal_uart_ex.c@189:f392fc9709a3, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 22:31:08 2019 +0000
- Revision:
- 189:f392fc9709a3
- Parent:
- 186:707f6e361f3e
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
<> | 144:ef7eb2e8f9f7 | 1 | /** |
<> | 144:ef7eb2e8f9f7 | 2 | ****************************************************************************** |
<> | 144:ef7eb2e8f9f7 | 3 | * @file stm32l0xx_hal_uart_ex.c |
<> | 144:ef7eb2e8f9f7 | 4 | * @author MCD Application Team |
<> | 144:ef7eb2e8f9f7 | 5 | * @brief Extended UART HAL module driver. |
Anna Bridge |
186:707f6e361f3e | 6 | * This file provides firmware functions to manage the following extended |
Anna Bridge |
186:707f6e361f3e | 7 | * functionalities of the Universal Asynchronous Receiver Transmitter Peripheral (UART). |
Anna Bridge |
186:707f6e361f3e | 8 | * + Initialization and de-initialization functions |
Anna Bridge |
186:707f6e361f3e | 9 | * + Peripheral Control functions |
Anna Bridge |
186:707f6e361f3e | 10 | * |
Anna Bridge |
186:707f6e361f3e | 11 | * |
<> | 144:ef7eb2e8f9f7 | 12 | @verbatim |
<> | 144:ef7eb2e8f9f7 | 13 | ============================================================================== |
<> | 144:ef7eb2e8f9f7 | 14 | ##### UART peripheral extended features ##### |
<> | 144:ef7eb2e8f9f7 | 15 | ============================================================================== |
Anna Bridge |
186:707f6e361f3e | 16 | |
Anna Bridge |
186:707f6e361f3e | 17 | (#) Declare a UART_HandleTypeDef handle structure. |
Anna Bridge |
186:707f6e361f3e | 18 | |
Anna Bridge |
186:707f6e361f3e | 19 | (#) For the UART RS485 Driver Enable mode, initialize the UART registers |
Anna Bridge |
186:707f6e361f3e | 20 | by calling the HAL_RS485Ex_Init() API. |
Anna Bridge |
186:707f6e361f3e | 21 | |
Anna Bridge |
186:707f6e361f3e | 22 | |
<> | 144:ef7eb2e8f9f7 | 23 | @endverbatim |
<> | 144:ef7eb2e8f9f7 | 24 | ****************************************************************************** |
<> | 144:ef7eb2e8f9f7 | 25 | * @attention |
<> | 144:ef7eb2e8f9f7 | 26 | * |
<> | 144:ef7eb2e8f9f7 | 27 | * <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2> |
<> | 144:ef7eb2e8f9f7 | 28 | * |
<> | 144:ef7eb2e8f9f7 | 29 | * Redistribution and use in source and binary forms, with or without modification, |
<> | 144:ef7eb2e8f9f7 | 30 | * are permitted provided that the following conditions are met: |
<> | 144:ef7eb2e8f9f7 | 31 | * 1. Redistributions of source code must retain the above copyright notice, |
<> | 144:ef7eb2e8f9f7 | 32 | * this list of conditions and the following disclaimer. |
<> | 144:ef7eb2e8f9f7 | 33 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
<> | 144:ef7eb2e8f9f7 | 34 | * this list of conditions and the following disclaimer in the documentation |
<> | 144:ef7eb2e8f9f7 | 35 | * and/or other materials provided with the distribution. |
<> | 144:ef7eb2e8f9f7 | 36 | * 3. Neither the name of STMicroelectronics nor the names of its contributors |
<> | 144:ef7eb2e8f9f7 | 37 | * may be used to endorse or promote products derived from this software |
<> | 144:ef7eb2e8f9f7 | 38 | * without specific prior written permission. |
<> | 144:ef7eb2e8f9f7 | 39 | * |
<> | 144:ef7eb2e8f9f7 | 40 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
<> | 144:ef7eb2e8f9f7 | 41 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
<> | 144:ef7eb2e8f9f7 | 42 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
<> | 144:ef7eb2e8f9f7 | 43 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
<> | 144:ef7eb2e8f9f7 | 44 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
<> | 144:ef7eb2e8f9f7 | 45 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
<> | 144:ef7eb2e8f9f7 | 46 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
<> | 144:ef7eb2e8f9f7 | 47 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
<> | 144:ef7eb2e8f9f7 | 48 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
<> | 144:ef7eb2e8f9f7 | 49 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
<> | 144:ef7eb2e8f9f7 | 50 | * |
Anna Bridge |
186:707f6e361f3e | 51 | ****************************************************************************** |
Anna Bridge |
186:707f6e361f3e | 52 | */ |
<> | 144:ef7eb2e8f9f7 | 53 | |
<> | 144:ef7eb2e8f9f7 | 54 | /* Includes ------------------------------------------------------------------*/ |
<> | 144:ef7eb2e8f9f7 | 55 | #include "stm32l0xx_hal.h" |
<> | 144:ef7eb2e8f9f7 | 56 | |
<> | 144:ef7eb2e8f9f7 | 57 | /** @addtogroup STM32L0xx_HAL_Driver |
<> | 144:ef7eb2e8f9f7 | 58 | * @{ |
<> | 144:ef7eb2e8f9f7 | 59 | */ |
<> | 144:ef7eb2e8f9f7 | 60 | |
Anna Bridge |
186:707f6e361f3e | 61 | /** @defgroup UARTEx UARTEx |
Anna Bridge |
186:707f6e361f3e | 62 | * @brief UART Extended HAL module driver |
<> | 144:ef7eb2e8f9f7 | 63 | * @{ |
<> | 144:ef7eb2e8f9f7 | 64 | */ |
<> | 144:ef7eb2e8f9f7 | 65 | |
Anna Bridge |
186:707f6e361f3e | 66 | #ifdef HAL_UART_MODULE_ENABLED |
Anna Bridge |
186:707f6e361f3e | 67 | |
<> | 144:ef7eb2e8f9f7 | 68 | /* Private typedef -----------------------------------------------------------*/ |
<> | 144:ef7eb2e8f9f7 | 69 | /* Private define ------------------------------------------------------------*/ |
Anna Bridge |
186:707f6e361f3e | 70 | /* Private macros ------------------------------------------------------------*/ |
<> | 144:ef7eb2e8f9f7 | 71 | /* Private variables ---------------------------------------------------------*/ |
<> | 144:ef7eb2e8f9f7 | 72 | /* Private function prototypes -----------------------------------------------*/ |
Anna Bridge |
186:707f6e361f3e | 73 | /** @defgroup UARTEx_Private_Functions UARTEx Private Functions |
Anna Bridge |
186:707f6e361f3e | 74 | * @{ |
Anna Bridge |
186:707f6e361f3e | 75 | */ |
Anna Bridge |
186:707f6e361f3e | 76 | static void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection); |
<> | 144:ef7eb2e8f9f7 | 77 | /** |
<> | 144:ef7eb2e8f9f7 | 78 | * @} |
<> | 144:ef7eb2e8f9f7 | 79 | */ |
<> | 144:ef7eb2e8f9f7 | 80 | |
Anna Bridge |
186:707f6e361f3e | 81 | /* Exported functions --------------------------------------------------------*/ |
Anna Bridge |
186:707f6e361f3e | 82 | |
Anna Bridge |
186:707f6e361f3e | 83 | /** @defgroup UARTEx_Exported_Functions UARTEx Exported Functions |
<> | 144:ef7eb2e8f9f7 | 84 | * @{ |
<> | 144:ef7eb2e8f9f7 | 85 | */ |
<> | 144:ef7eb2e8f9f7 | 86 | |
Anna Bridge |
186:707f6e361f3e | 87 | /** @defgroup UARTEx_Exported_Functions_Group1 Initialization and de-initialization functions |
<> | 144:ef7eb2e8f9f7 | 88 | * @brief Extended Initialization and Configuration Functions |
<> | 144:ef7eb2e8f9f7 | 89 | * |
Anna Bridge |
186:707f6e361f3e | 90 | @verbatim |
<> | 144:ef7eb2e8f9f7 | 91 | =============================================================================== |
<> | 144:ef7eb2e8f9f7 | 92 | ##### Initialization and Configuration functions ##### |
Anna Bridge |
186:707f6e361f3e | 93 | =============================================================================== |
<> | 144:ef7eb2e8f9f7 | 94 | [..] |
Anna Bridge |
186:707f6e361f3e | 95 | This subsection provides a set of functions allowing to initialize the USARTx or the UARTy |
Anna Bridge |
186:707f6e361f3e | 96 | in asynchronous mode. |
Anna Bridge |
186:707f6e361f3e | 97 | (+) For the asynchronous mode the parameters below can be configured: |
Anna Bridge |
186:707f6e361f3e | 98 | (++) Baud Rate |
Anna Bridge |
186:707f6e361f3e | 99 | (++) Word Length |
Anna Bridge |
186:707f6e361f3e | 100 | (++) Stop Bit |
Anna Bridge |
186:707f6e361f3e | 101 | (++) Parity: If the parity is enabled, then the MSB bit of the data written |
Anna Bridge |
186:707f6e361f3e | 102 | in the data register is transmitted but is changed by the parity bit. |
Anna Bridge |
186:707f6e361f3e | 103 | (++) Hardware flow control |
Anna Bridge |
186:707f6e361f3e | 104 | (++) Receiver/transmitter modes |
Anna Bridge |
186:707f6e361f3e | 105 | (++) Over Sampling Method |
Anna Bridge |
186:707f6e361f3e | 106 | (++) One-Bit Sampling Method |
Anna Bridge |
186:707f6e361f3e | 107 | (+) For the asynchronous mode, the following advanced features can be configured as well: |
Anna Bridge |
186:707f6e361f3e | 108 | (++) TX and/or RX pin level inversion |
Anna Bridge |
186:707f6e361f3e | 109 | (++) data logical level inversion |
Anna Bridge |
186:707f6e361f3e | 110 | (++) RX and TX pins swap |
Anna Bridge |
186:707f6e361f3e | 111 | (++) RX overrun detection disabling |
Anna Bridge |
186:707f6e361f3e | 112 | (++) DMA disabling on RX error |
Anna Bridge |
186:707f6e361f3e | 113 | (++) MSB first on communication line |
Anna Bridge |
186:707f6e361f3e | 114 | (++) auto Baud rate detection |
Anna Bridge |
186:707f6e361f3e | 115 | [..] |
Anna Bridge |
186:707f6e361f3e | 116 | The HAL_RS485Ex_Init() API follows the UART RS485 mode configuration |
Anna Bridge |
186:707f6e361f3e | 117 | procedures (details for the procedures are available in reference manual). |
<> | 144:ef7eb2e8f9f7 | 118 | |
<> | 144:ef7eb2e8f9f7 | 119 | @endverbatim |
Anna Bridge |
186:707f6e361f3e | 120 | |
Anna Bridge |
186:707f6e361f3e | 121 | Depending on the frame length defined by the M1 and M0 bits (7-bit, |
Anna Bridge |
186:707f6e361f3e | 122 | 8-bit or 9-bit), the possible UART formats are listed in the |
Anna Bridge |
186:707f6e361f3e | 123 | following table. |
Anna Bridge |
186:707f6e361f3e | 124 | |
Anna Bridge |
186:707f6e361f3e | 125 | Table 1. UART frame format. |
Anna Bridge |
186:707f6e361f3e | 126 | +-----------------------------------------------------------------------+ |
Anna Bridge |
186:707f6e361f3e | 127 | | M1 bit | M0 bit | PCE bit | UART frame | |
Anna Bridge |
186:707f6e361f3e | 128 | |---------|---------|-----------|---------------------------------------| |
Anna Bridge |
186:707f6e361f3e | 129 | | 0 | 0 | 0 | | SB | 8 bit data | STB | | |
Anna Bridge |
186:707f6e361f3e | 130 | |---------|---------|-----------|---------------------------------------| |
Anna Bridge |
186:707f6e361f3e | 131 | | 0 | 0 | 1 | | SB | 7 bit data | PB | STB | | |
Anna Bridge |
186:707f6e361f3e | 132 | |---------|---------|-----------|---------------------------------------| |
Anna Bridge |
186:707f6e361f3e | 133 | | 0 | 1 | 0 | | SB | 9 bit data | STB | | |
Anna Bridge |
186:707f6e361f3e | 134 | |---------|---------|-----------|---------------------------------------| |
Anna Bridge |
186:707f6e361f3e | 135 | | 0 | 1 | 1 | | SB | 8 bit data | PB | STB | | |
Anna Bridge |
186:707f6e361f3e | 136 | |---------|---------|-----------|---------------------------------------| |
Anna Bridge |
186:707f6e361f3e | 137 | | 1 | 0 | 0 | | SB | 7 bit data | STB | | |
Anna Bridge |
186:707f6e361f3e | 138 | |---------|---------|-----------|---------------------------------------| |
Anna Bridge |
186:707f6e361f3e | 139 | | 1 | 0 | 1 | | SB | 6 bit data | PB | STB | | |
Anna Bridge |
186:707f6e361f3e | 140 | +-----------------------------------------------------------------------+ |
Anna Bridge |
186:707f6e361f3e | 141 | |
<> | 144:ef7eb2e8f9f7 | 142 | * @{ |
<> | 144:ef7eb2e8f9f7 | 143 | */ |
<> | 144:ef7eb2e8f9f7 | 144 | |
<> | 144:ef7eb2e8f9f7 | 145 | /** |
Anna Bridge |
186:707f6e361f3e | 146 | * @brief Initialize the RS485 Driver enable feature according to the specified |
Anna Bridge |
186:707f6e361f3e | 147 | * parameters in the UART_InitTypeDef and creates the associated handle. |
Anna Bridge |
186:707f6e361f3e | 148 | * @param huart: UART handle. |
Anna Bridge |
186:707f6e361f3e | 149 | * @param Polarity: select the driver enable polarity. |
<> | 144:ef7eb2e8f9f7 | 150 | * This parameter can be one of the following values: |
Anna Bridge |
186:707f6e361f3e | 151 | * @arg @ref UART_DE_POLARITY_HIGH DE signal is active high |
Anna Bridge |
186:707f6e361f3e | 152 | * @arg @ref UART_DE_POLARITY_LOW DE signal is active low |
Anna Bridge |
186:707f6e361f3e | 153 | * @param AssertionTime: Driver Enable assertion time: |
<> | 144:ef7eb2e8f9f7 | 154 | * 5-bit value defining the time between the activation of the DE (Driver Enable) |
<> | 144:ef7eb2e8f9f7 | 155 | * signal and the beginning of the start bit. It is expressed in sample time |
Anna Bridge |
186:707f6e361f3e | 156 | * units (1/8 or 1/16 bit time, depending on the oversampling rate) |
Anna Bridge |
186:707f6e361f3e | 157 | * @param DeassertionTime: Driver Enable deassertion time: |
<> | 144:ef7eb2e8f9f7 | 158 | * 5-bit value defining the time between the end of the last stop bit, in a |
<> | 144:ef7eb2e8f9f7 | 159 | * transmitted message, and the de-activation of the DE (Driver Enable) signal. |
<> | 144:ef7eb2e8f9f7 | 160 | * It is expressed in sample time units (1/8 or 1/16 bit time, depending on the |
<> | 144:ef7eb2e8f9f7 | 161 | * oversampling rate). |
<> | 144:ef7eb2e8f9f7 | 162 | * @retval HAL status |
<> | 144:ef7eb2e8f9f7 | 163 | */ |
<> | 144:ef7eb2e8f9f7 | 164 | HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime) |
<> | 144:ef7eb2e8f9f7 | 165 | { |
<> | 151:5eaa88a5bcc7 | 166 | uint32_t temp = 0x0U; |
Anna Bridge |
186:707f6e361f3e | 167 | |
<> | 144:ef7eb2e8f9f7 | 168 | /* Check the UART handle allocation */ |
<> | 144:ef7eb2e8f9f7 | 169 | if(huart == NULL) |
<> | 144:ef7eb2e8f9f7 | 170 | { |
<> | 144:ef7eb2e8f9f7 | 171 | return HAL_ERROR; |
<> | 144:ef7eb2e8f9f7 | 172 | } |
<> | 144:ef7eb2e8f9f7 | 173 | |
<> | 144:ef7eb2e8f9f7 | 174 | /* Check the Driver Enable polarity */ |
<> | 144:ef7eb2e8f9f7 | 175 | assert_param(IS_UART_DE_POLARITY(Polarity)); |
Anna Bridge |
186:707f6e361f3e | 176 | |
<> | 144:ef7eb2e8f9f7 | 177 | /* Check the Driver Enable assertion time */ |
<> | 144:ef7eb2e8f9f7 | 178 | assert_param(IS_UART_ASSERTIONTIME(AssertionTime)); |
Anna Bridge |
186:707f6e361f3e | 179 | |
<> | 144:ef7eb2e8f9f7 | 180 | /* Check the Driver Enable deassertion time */ |
<> | 144:ef7eb2e8f9f7 | 181 | assert_param(IS_UART_DEASSERTIONTIME(DeassertionTime)); |
Anna Bridge |
186:707f6e361f3e | 182 | |
<> | 151:5eaa88a5bcc7 | 183 | if(huart->gState == HAL_UART_STATE_RESET) |
Anna Bridge |
186:707f6e361f3e | 184 | { |
Anna Bridge |
186:707f6e361f3e | 185 | /* Allocate lock resource and initialize it */ |
Anna Bridge |
186:707f6e361f3e | 186 | huart->Lock = HAL_UNLOCKED; |
Anna Bridge |
186:707f6e361f3e | 187 | |
<> | 144:ef7eb2e8f9f7 | 188 | /* Init the low level hardware : GPIO, CLOCK, CORTEX */ |
<> | 144:ef7eb2e8f9f7 | 189 | HAL_UART_MspInit(huart); |
<> | 144:ef7eb2e8f9f7 | 190 | } |
<> | 144:ef7eb2e8f9f7 | 191 | |
<> | 151:5eaa88a5bcc7 | 192 | huart->gState = HAL_UART_STATE_BUSY; |
<> | 144:ef7eb2e8f9f7 | 193 | |
<> | 144:ef7eb2e8f9f7 | 194 | /* Disable the Peripheral */ |
<> | 144:ef7eb2e8f9f7 | 195 | __HAL_UART_DISABLE(huart); |
Anna Bridge |
186:707f6e361f3e | 196 | |
<> | 144:ef7eb2e8f9f7 | 197 | /* Set the UART Communication parameters */ |
<> | 144:ef7eb2e8f9f7 | 198 | if(huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT) |
<> | 144:ef7eb2e8f9f7 | 199 | { |
<> | 144:ef7eb2e8f9f7 | 200 | UART_AdvFeatureConfig(huart); |
<> | 144:ef7eb2e8f9f7 | 201 | } |
Anna Bridge |
186:707f6e361f3e | 202 | |
Anna Bridge |
186:707f6e361f3e | 203 | if (UART_SetConfig(huart) == HAL_ERROR) |
Anna Bridge |
186:707f6e361f3e | 204 | { |
Anna Bridge |
186:707f6e361f3e | 205 | return HAL_ERROR; |
Anna Bridge |
186:707f6e361f3e | 206 | } |
Anna Bridge |
186:707f6e361f3e | 207 | |
<> | 144:ef7eb2e8f9f7 | 208 | /* Enable the Driver Enable mode by setting the DEM bit in the CR3 register */ |
Anna Bridge |
186:707f6e361f3e | 209 | SET_BIT(huart->Instance->CR3, USART_CR3_DEM); |
Anna Bridge |
186:707f6e361f3e | 210 | |
<> | 144:ef7eb2e8f9f7 | 211 | /* Set the Driver Enable polarity */ |
<> | 144:ef7eb2e8f9f7 | 212 | MODIFY_REG(huart->Instance->CR3, USART_CR3_DEP, Polarity); |
Anna Bridge |
186:707f6e361f3e | 213 | |
<> | 144:ef7eb2e8f9f7 | 214 | /* Set the Driver Enable assertion and deassertion times */ |
<> | 144:ef7eb2e8f9f7 | 215 | temp = (AssertionTime << UART_CR1_DEAT_ADDRESS_LSB_POS); |
<> | 144:ef7eb2e8f9f7 | 216 | temp |= (DeassertionTime << UART_CR1_DEDT_ADDRESS_LSB_POS); |
<> | 144:ef7eb2e8f9f7 | 217 | MODIFY_REG(huart->Instance->CR1, (USART_CR1_DEDT|USART_CR1_DEAT), temp); |
Anna Bridge |
186:707f6e361f3e | 218 | |
<> | 144:ef7eb2e8f9f7 | 219 | /* Enable the Peripheral */ |
<> | 144:ef7eb2e8f9f7 | 220 | __HAL_UART_ENABLE(huart); |
Anna Bridge |
186:707f6e361f3e | 221 | |
Anna Bridge |
186:707f6e361f3e | 222 | /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */ |
<> | 144:ef7eb2e8f9f7 | 223 | return (UART_CheckIdleState(huart)); |
<> | 144:ef7eb2e8f9f7 | 224 | } |
<> | 144:ef7eb2e8f9f7 | 225 | |
<> | 144:ef7eb2e8f9f7 | 226 | |
<> | 144:ef7eb2e8f9f7 | 227 | /** |
<> | 144:ef7eb2e8f9f7 | 228 | * @} |
<> | 144:ef7eb2e8f9f7 | 229 | */ |
Anna Bridge |
186:707f6e361f3e | 230 | |
Anna Bridge |
186:707f6e361f3e | 231 | /** @defgroup UARTEx_Exported_Functions_Group3 Peripheral Control functions |
Anna Bridge |
186:707f6e361f3e | 232 | * @brief Extended Peripheral Control functions |
<> | 144:ef7eb2e8f9f7 | 233 | * |
Anna Bridge |
186:707f6e361f3e | 234 | @verbatim |
Anna Bridge |
186:707f6e361f3e | 235 | =============================================================================== |
Anna Bridge |
186:707f6e361f3e | 236 | ##### Peripheral Control functions ##### |
<> | 144:ef7eb2e8f9f7 | 237 | =============================================================================== |
Anna Bridge |
186:707f6e361f3e | 238 | [..] This section provides the following functions: |
Anna Bridge |
186:707f6e361f3e | 239 | (+) HAL_UARTEx_EnableClockStopMode() API enables the UART clock (HSI or LSE only) during stop mode |
Anna Bridge |
186:707f6e361f3e | 240 | (+) HAL_UARTEx_DisableClockStopMode() API disables the above functionality |
<> | 144:ef7eb2e8f9f7 | 241 | (+) HAL_MultiProcessorEx_AddressLength_Set() API optionally sets the UART node address |
<> | 144:ef7eb2e8f9f7 | 242 | detection length to more than 4 bits for multiprocessor address mark wake up. |
Anna Bridge |
186:707f6e361f3e | 243 | (+) HAL_UARTEx_StopModeWakeUpSourceConfig() API defines the wake-up from stop mode |
Anna Bridge |
186:707f6e361f3e | 244 | trigger: address match, Start Bit detection or RXNE bit status. |
Anna Bridge |
186:707f6e361f3e | 245 | (+) HAL_UARTEx_EnableStopMode() API enables the UART to wake up the MCU from stop mode |
<> | 144:ef7eb2e8f9f7 | 246 | (+) HAL_UARTEx_DisableStopMode() API disables the above functionality |
<> | 144:ef7eb2e8f9f7 | 247 | (+) HAL_UARTEx_EnableClockStopMode() API enables the UART HSI clock during stop mode |
<> | 144:ef7eb2e8f9f7 | 248 | (+) HAL_UARTEx_DisableClockStopMode() API disables the above functionality |
Anna Bridge |
186:707f6e361f3e | 249 | (+) HAL_UARTEx_WakeupCallback() called upon UART wakeup interrupt |
Anna Bridge |
186:707f6e361f3e | 250 | |
<> | 144:ef7eb2e8f9f7 | 251 | |
<> | 144:ef7eb2e8f9f7 | 252 | @endverbatim |
<> | 144:ef7eb2e8f9f7 | 253 | * @{ |
<> | 144:ef7eb2e8f9f7 | 254 | */ |
Anna Bridge |
186:707f6e361f3e | 255 | |
Anna Bridge |
186:707f6e361f3e | 256 | |
Anna Bridge |
186:707f6e361f3e | 257 | |
Anna Bridge |
186:707f6e361f3e | 258 | |
Anna Bridge |
186:707f6e361f3e | 259 | /** |
Anna Bridge |
186:707f6e361f3e | 260 | * @brief By default in multiprocessor mode, when the wake up method is set |
Anna Bridge |
186:707f6e361f3e | 261 | * to address mark, the UART handles only 4-bit long addresses detection; |
Anna Bridge |
186:707f6e361f3e | 262 | * this API allows to enable longer addresses detection (6-, 7- or 8-bit |
Anna Bridge |
186:707f6e361f3e | 263 | * long). |
Anna Bridge |
186:707f6e361f3e | 264 | * @note Addresses detection lengths are: 6-bit address detection in 7-bit data mode, |
Anna Bridge |
186:707f6e361f3e | 265 | * 7-bit address detection in 8-bit data mode, 8-bit address detection in 9-bit data mode. |
Anna Bridge |
186:707f6e361f3e | 266 | * @param huart: UART handle. |
Anna Bridge |
186:707f6e361f3e | 267 | * @param AddressLength: this parameter can be one of the following values: |
Anna Bridge |
186:707f6e361f3e | 268 | * @arg @ref UART_ADDRESS_DETECT_4B 4-bit long address |
Anna Bridge |
186:707f6e361f3e | 269 | * @arg @ref UART_ADDRESS_DETECT_7B 6-, 7- or 8-bit long address |
Anna Bridge |
186:707f6e361f3e | 270 | * @retval HAL status |
Anna Bridge |
186:707f6e361f3e | 271 | */ |
Anna Bridge |
186:707f6e361f3e | 272 | HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength) |
Anna Bridge |
186:707f6e361f3e | 273 | { |
Anna Bridge |
186:707f6e361f3e | 274 | /* Check the UART handle allocation */ |
Anna Bridge |
186:707f6e361f3e | 275 | if(huart == NULL) |
Anna Bridge |
186:707f6e361f3e | 276 | { |
Anna Bridge |
186:707f6e361f3e | 277 | return HAL_ERROR; |
Anna Bridge |
186:707f6e361f3e | 278 | } |
Anna Bridge |
186:707f6e361f3e | 279 | |
Anna Bridge |
186:707f6e361f3e | 280 | /* Check the address length parameter */ |
Anna Bridge |
186:707f6e361f3e | 281 | assert_param(IS_UART_ADDRESSLENGTH_DETECT(AddressLength)); |
Anna Bridge |
186:707f6e361f3e | 282 | |
Anna Bridge |
186:707f6e361f3e | 283 | huart->gState = HAL_UART_STATE_BUSY; |
Anna Bridge |
186:707f6e361f3e | 284 | |
Anna Bridge |
186:707f6e361f3e | 285 | /* Disable the Peripheral */ |
Anna Bridge |
186:707f6e361f3e | 286 | __HAL_UART_DISABLE(huart); |
Anna Bridge |
186:707f6e361f3e | 287 | |
Anna Bridge |
186:707f6e361f3e | 288 | /* Set the address length */ |
Anna Bridge |
186:707f6e361f3e | 289 | MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, AddressLength); |
Anna Bridge |
186:707f6e361f3e | 290 | |
Anna Bridge |
186:707f6e361f3e | 291 | /* Enable the Peripheral */ |
Anna Bridge |
186:707f6e361f3e | 292 | __HAL_UART_ENABLE(huart); |
Anna Bridge |
186:707f6e361f3e | 293 | |
Anna Bridge |
186:707f6e361f3e | 294 | /* TEACK and/or REACK to check before moving huart->gState and/or huart->RxState to Ready */ |
Anna Bridge |
186:707f6e361f3e | 295 | return (UART_CheckIdleState(huart)); |
Anna Bridge |
186:707f6e361f3e | 296 | } |
Anna Bridge |
186:707f6e361f3e | 297 | |
Anna Bridge |
186:707f6e361f3e | 298 | |
<> | 144:ef7eb2e8f9f7 | 299 | /** |
Anna Bridge |
186:707f6e361f3e | 300 | * @brief Set Wakeup from Stop mode interrupt flag selection. |
Anna Bridge |
186:707f6e361f3e | 301 | * @param huart: UART handle. |
Anna Bridge |
186:707f6e361f3e | 302 | * @param WakeUpSelection: address match, Start Bit detection or RXNE bit status. |
Anna Bridge |
186:707f6e361f3e | 303 | * This parameter can be one of the following values: |
Anna Bridge |
186:707f6e361f3e | 304 | * @arg @ref UART_WAKEUP_ON_ADDRESS |
Anna Bridge |
186:707f6e361f3e | 305 | * @arg @ref UART_WAKEUP_ON_STARTBIT |
Anna Bridge |
186:707f6e361f3e | 306 | * @arg @ref UART_WAKEUP_ON_READDATA_NONEMPTY |
Anna Bridge |
186:707f6e361f3e | 307 | * @retval HAL status |
Anna Bridge |
186:707f6e361f3e | 308 | */ |
Anna Bridge |
186:707f6e361f3e | 309 | HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection) |
Anna Bridge |
186:707f6e361f3e | 310 | { |
Anna Bridge |
186:707f6e361f3e | 311 | HAL_StatusTypeDef status = HAL_OK; |
Anna Bridge |
186:707f6e361f3e | 312 | uint32_t tickstart = 0; |
Anna Bridge |
186:707f6e361f3e | 313 | |
Anna Bridge |
186:707f6e361f3e | 314 | /* check the wake-up from stop mode UART instance */ |
Anna Bridge |
186:707f6e361f3e | 315 | assert_param(IS_UART_WAKEUP_FROMSTOP_INSTANCE(huart->Instance)); |
Anna Bridge |
186:707f6e361f3e | 316 | /* check the wake-up selection parameter */ |
Anna Bridge |
186:707f6e361f3e | 317 | assert_param(IS_UART_WAKEUP_SELECTION(WakeUpSelection.WakeUpEvent)); |
Anna Bridge |
186:707f6e361f3e | 318 | |
Anna Bridge |
186:707f6e361f3e | 319 | /* Process Locked */ |
Anna Bridge |
186:707f6e361f3e | 320 | __HAL_LOCK(huart); |
Anna Bridge |
186:707f6e361f3e | 321 | |
Anna Bridge |
186:707f6e361f3e | 322 | huart->gState = HAL_UART_STATE_BUSY; |
Anna Bridge |
186:707f6e361f3e | 323 | |
Anna Bridge |
186:707f6e361f3e | 324 | /* Disable the Peripheral */ |
Anna Bridge |
186:707f6e361f3e | 325 | __HAL_UART_DISABLE(huart); |
Anna Bridge |
186:707f6e361f3e | 326 | |
Anna Bridge |
186:707f6e361f3e | 327 | /* Set the wake-up selection scheme */ |
Anna Bridge |
186:707f6e361f3e | 328 | MODIFY_REG(huart->Instance->CR3, USART_CR3_WUS, WakeUpSelection.WakeUpEvent); |
Anna Bridge |
186:707f6e361f3e | 329 | |
Anna Bridge |
186:707f6e361f3e | 330 | if (WakeUpSelection.WakeUpEvent == UART_WAKEUP_ON_ADDRESS) |
Anna Bridge |
186:707f6e361f3e | 331 | { |
Anna Bridge |
186:707f6e361f3e | 332 | UARTEx_Wakeup_AddressConfig(huart, WakeUpSelection); |
Anna Bridge |
186:707f6e361f3e | 333 | } |
Anna Bridge |
186:707f6e361f3e | 334 | |
Anna Bridge |
186:707f6e361f3e | 335 | /* Enable the Peripheral */ |
Anna Bridge |
186:707f6e361f3e | 336 | __HAL_UART_ENABLE(huart); |
Anna Bridge |
186:707f6e361f3e | 337 | |
Anna Bridge |
186:707f6e361f3e | 338 | /* Init tickstart for timeout managment*/ |
Anna Bridge |
186:707f6e361f3e | 339 | tickstart = HAL_GetTick(); |
Anna Bridge |
186:707f6e361f3e | 340 | |
Anna Bridge |
186:707f6e361f3e | 341 | /* Wait until REACK flag is set */ |
Anna Bridge |
186:707f6e361f3e | 342 | if(UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK) |
Anna Bridge |
186:707f6e361f3e | 343 | { |
Anna Bridge |
186:707f6e361f3e | 344 | status = HAL_TIMEOUT; |
Anna Bridge |
186:707f6e361f3e | 345 | } |
Anna Bridge |
186:707f6e361f3e | 346 | else |
Anna Bridge |
186:707f6e361f3e | 347 | { |
Anna Bridge |
186:707f6e361f3e | 348 | /* Initialize the UART State */ |
Anna Bridge |
186:707f6e361f3e | 349 | huart->gState = HAL_UART_STATE_READY; |
Anna Bridge |
186:707f6e361f3e | 350 | } |
Anna Bridge |
186:707f6e361f3e | 351 | |
Anna Bridge |
186:707f6e361f3e | 352 | /* Process Unlocked */ |
Anna Bridge |
186:707f6e361f3e | 353 | __HAL_UNLOCK(huart); |
Anna Bridge |
186:707f6e361f3e | 354 | |
Anna Bridge |
186:707f6e361f3e | 355 | return status; |
Anna Bridge |
186:707f6e361f3e | 356 | } |
Anna Bridge |
186:707f6e361f3e | 357 | |
Anna Bridge |
186:707f6e361f3e | 358 | |
Anna Bridge |
186:707f6e361f3e | 359 | /** |
Anna Bridge |
186:707f6e361f3e | 360 | * @brief Enable UART Stop Mode. |
Anna Bridge |
186:707f6e361f3e | 361 | * @note The UART is able to wake up the MCU from Stop 1 mode as long as UART clock is HSI or LSE. |
Anna Bridge |
186:707f6e361f3e | 362 | * @param huart: UART handle. |
<> | 144:ef7eb2e8f9f7 | 363 | * @retval HAL status |
<> | 144:ef7eb2e8f9f7 | 364 | */ |
<> | 144:ef7eb2e8f9f7 | 365 | HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart) |
<> | 144:ef7eb2e8f9f7 | 366 | { |
<> | 144:ef7eb2e8f9f7 | 367 | /* Process Locked */ |
<> | 144:ef7eb2e8f9f7 | 368 | __HAL_LOCK(huart); |
Anna Bridge |
186:707f6e361f3e | 369 | |
<> | 151:5eaa88a5bcc7 | 370 | huart->gState = HAL_UART_STATE_BUSY; |
Anna Bridge |
186:707f6e361f3e | 371 | |
Anna Bridge |
186:707f6e361f3e | 372 | /* Set UESM bit */ |
Anna Bridge |
186:707f6e361f3e | 373 | SET_BIT(huart->Instance->CR1, USART_CR1_UESM); |
Anna Bridge |
186:707f6e361f3e | 374 | |
<> | 151:5eaa88a5bcc7 | 375 | huart->gState = HAL_UART_STATE_READY; |
Anna Bridge |
186:707f6e361f3e | 376 | |
<> | 144:ef7eb2e8f9f7 | 377 | /* Process Unlocked */ |
<> | 144:ef7eb2e8f9f7 | 378 | __HAL_UNLOCK(huart); |
Anna Bridge |
186:707f6e361f3e | 379 | |
Anna Bridge |
186:707f6e361f3e | 380 | return HAL_OK; |
Anna Bridge |
186:707f6e361f3e | 381 | } |
Anna Bridge |
186:707f6e361f3e | 382 | |
Anna Bridge |
186:707f6e361f3e | 383 | /** |
Anna Bridge |
186:707f6e361f3e | 384 | * @brief Disable UART Stop Mode. |
Anna Bridge |
186:707f6e361f3e | 385 | * @param huart: UART handle. |
Anna Bridge |
186:707f6e361f3e | 386 | * @retval HAL status |
Anna Bridge |
186:707f6e361f3e | 387 | */ |
Anna Bridge |
186:707f6e361f3e | 388 | HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart) |
Anna Bridge |
186:707f6e361f3e | 389 | { |
Anna Bridge |
186:707f6e361f3e | 390 | /* Process Locked */ |
Anna Bridge |
186:707f6e361f3e | 391 | __HAL_LOCK(huart); |
Anna Bridge |
186:707f6e361f3e | 392 | |
Anna Bridge |
186:707f6e361f3e | 393 | huart->gState = HAL_UART_STATE_BUSY; |
Anna Bridge |
186:707f6e361f3e | 394 | |
Anna Bridge |
186:707f6e361f3e | 395 | /* Clear UESM bit */ |
Anna Bridge |
186:707f6e361f3e | 396 | CLEAR_BIT(huart->Instance->CR1, USART_CR1_UESM); |
Anna Bridge |
186:707f6e361f3e | 397 | |
Anna Bridge |
186:707f6e361f3e | 398 | huart->gState = HAL_UART_STATE_READY; |
Anna Bridge |
186:707f6e361f3e | 399 | |
Anna Bridge |
186:707f6e361f3e | 400 | /* Process Unlocked */ |
Anna Bridge |
186:707f6e361f3e | 401 | __HAL_UNLOCK(huart); |
Anna Bridge |
186:707f6e361f3e | 402 | |
Anna Bridge |
186:707f6e361f3e | 403 | return HAL_OK; |
<> | 144:ef7eb2e8f9f7 | 404 | } |
<> | 144:ef7eb2e8f9f7 | 405 | |
<> | 144:ef7eb2e8f9f7 | 406 | /** |
<> | 144:ef7eb2e8f9f7 | 407 | * @brief Enable UART Clock in Stop Mode |
<> | 144:ef7eb2e8f9f7 | 408 | * The UART keeps the Clock ON during Stop mode |
<> | 144:ef7eb2e8f9f7 | 409 | * @param huart: uart handle |
<> | 144:ef7eb2e8f9f7 | 410 | * @retval HAL status |
<> | 144:ef7eb2e8f9f7 | 411 | */ |
<> | 144:ef7eb2e8f9f7 | 412 | HAL_StatusTypeDef HAL_UARTEx_EnableClockStopMode(UART_HandleTypeDef *huart) |
<> | 144:ef7eb2e8f9f7 | 413 | { |
<> | 144:ef7eb2e8f9f7 | 414 | /* Process Locked */ |
<> | 144:ef7eb2e8f9f7 | 415 | __HAL_LOCK(huart); |
<> | 144:ef7eb2e8f9f7 | 416 | |
<> | 151:5eaa88a5bcc7 | 417 | huart->gState = HAL_UART_STATE_BUSY; |
<> | 144:ef7eb2e8f9f7 | 418 | |
Anna Bridge |
186:707f6e361f3e | 419 | /* Set UCESM bit */ |
Anna Bridge |
186:707f6e361f3e | 420 | SET_BIT(huart->Instance->CR3, USART_CR3_UCESM); |
<> | 144:ef7eb2e8f9f7 | 421 | |
<> | 151:5eaa88a5bcc7 | 422 | huart->gState = HAL_UART_STATE_READY; |
<> | 144:ef7eb2e8f9f7 | 423 | |
<> | 144:ef7eb2e8f9f7 | 424 | /* Process Unlocked */ |
<> | 144:ef7eb2e8f9f7 | 425 | __HAL_UNLOCK(huart); |
<> | 144:ef7eb2e8f9f7 | 426 | |
<> | 144:ef7eb2e8f9f7 | 427 | return HAL_OK; |
<> | 144:ef7eb2e8f9f7 | 428 | } |
<> | 144:ef7eb2e8f9f7 | 429 | |
<> | 144:ef7eb2e8f9f7 | 430 | /** |
<> | 144:ef7eb2e8f9f7 | 431 | * @brief Disable UART Clock in Stop Mode |
<> | 144:ef7eb2e8f9f7 | 432 | * @param huart: uart handle |
<> | 144:ef7eb2e8f9f7 | 433 | * @retval HAL status |
<> | 144:ef7eb2e8f9f7 | 434 | */ |
<> | 144:ef7eb2e8f9f7 | 435 | HAL_StatusTypeDef HAL_UARTEx_DisableClockStopMode(UART_HandleTypeDef *huart) |
<> | 144:ef7eb2e8f9f7 | 436 | { |
<> | 144:ef7eb2e8f9f7 | 437 | /* Process Locked */ |
<> | 144:ef7eb2e8f9f7 | 438 | __HAL_LOCK(huart); |
<> | 144:ef7eb2e8f9f7 | 439 | |
<> | 151:5eaa88a5bcc7 | 440 | huart->gState = HAL_UART_STATE_BUSY; |
<> | 144:ef7eb2e8f9f7 | 441 | |
Anna Bridge |
186:707f6e361f3e | 442 | /* Clear UCESM bit */ |
Anna Bridge |
186:707f6e361f3e | 443 | CLEAR_BIT(huart->Instance->CR3, USART_CR3_UCESM); |
<> | 144:ef7eb2e8f9f7 | 444 | |
<> | 151:5eaa88a5bcc7 | 445 | huart->gState = HAL_UART_STATE_READY; |
<> | 144:ef7eb2e8f9f7 | 446 | |
<> | 144:ef7eb2e8f9f7 | 447 | /* Process Unlocked */ |
<> | 144:ef7eb2e8f9f7 | 448 | __HAL_UNLOCK(huart); |
<> | 144:ef7eb2e8f9f7 | 449 | |
<> | 144:ef7eb2e8f9f7 | 450 | return HAL_OK; |
<> | 144:ef7eb2e8f9f7 | 451 | } |
<> | 144:ef7eb2e8f9f7 | 452 | |
<> | 144:ef7eb2e8f9f7 | 453 | /** |
Anna Bridge |
186:707f6e361f3e | 454 | * @brief UART wakeup from Stop mode callback. |
Anna Bridge |
186:707f6e361f3e | 455 | * @param huart: UART handle. |
<> | 144:ef7eb2e8f9f7 | 456 | * @retval None |
<> | 144:ef7eb2e8f9f7 | 457 | */ |
Anna Bridge |
186:707f6e361f3e | 458 | __weak void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart) |
<> | 144:ef7eb2e8f9f7 | 459 | { |
<> | 144:ef7eb2e8f9f7 | 460 | /* Prevent unused argument(s) compilation warning */ |
<> | 144:ef7eb2e8f9f7 | 461 | UNUSED(huart); |
<> | 144:ef7eb2e8f9f7 | 462 | |
<> | 144:ef7eb2e8f9f7 | 463 | /* NOTE : This function should not be modified, when the callback is needed, |
Anna Bridge |
186:707f6e361f3e | 464 | the HAL_UARTEx_WakeupCallback can be implemented in the user file. |
<> | 144:ef7eb2e8f9f7 | 465 | */ |
<> | 144:ef7eb2e8f9f7 | 466 | } |
<> | 144:ef7eb2e8f9f7 | 467 | |
<> | 144:ef7eb2e8f9f7 | 468 | /** |
<> | 144:ef7eb2e8f9f7 | 469 | * @} |
Anna Bridge |
186:707f6e361f3e | 470 | */ |
<> | 144:ef7eb2e8f9f7 | 471 | |
Anna Bridge |
186:707f6e361f3e | 472 | /** |
<> | 144:ef7eb2e8f9f7 | 473 | * @} |
<> | 144:ef7eb2e8f9f7 | 474 | */ |
<> | 144:ef7eb2e8f9f7 | 475 | |
Anna Bridge |
186:707f6e361f3e | 476 | /** @addtogroup UARTEx_Private_Functions |
<> | 144:ef7eb2e8f9f7 | 477 | * @{ |
<> | 144:ef7eb2e8f9f7 | 478 | */ |
Anna Bridge |
186:707f6e361f3e | 479 | |
<> | 144:ef7eb2e8f9f7 | 480 | /** |
Anna Bridge |
186:707f6e361f3e | 481 | * @brief Initialize the UART wake-up from stop mode parameters when triggered by address detection. |
Anna Bridge |
186:707f6e361f3e | 482 | * @param huart: UART handle. |
Anna Bridge |
186:707f6e361f3e | 483 | * @param WakeUpSelection: UART wake up from stop mode parameters. |
Anna Bridge |
186:707f6e361f3e | 484 | * @retval None |
Anna Bridge |
186:707f6e361f3e | 485 | */ |
Anna Bridge |
186:707f6e361f3e | 486 | static void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection) |
<> | 144:ef7eb2e8f9f7 | 487 | { |
<> | 144:ef7eb2e8f9f7 | 488 | assert_param(IS_UART_ADDRESSLENGTH_DETECT(WakeUpSelection.AddressLength)); |
<> | 144:ef7eb2e8f9f7 | 489 | if(WakeUpSelection.AddressLength == UART_ADDRESS_DETECT_4B) |
<> | 144:ef7eb2e8f9f7 | 490 | { |
<> | 144:ef7eb2e8f9f7 | 491 | assert_param(IS_UART_4B_ADDRESS(WakeUpSelection.Address)); |
<> | 144:ef7eb2e8f9f7 | 492 | } |
<> | 144:ef7eb2e8f9f7 | 493 | else |
<> | 144:ef7eb2e8f9f7 | 494 | { |
<> | 144:ef7eb2e8f9f7 | 495 | assert_param(IS_UART_7B_ADDRESS(WakeUpSelection.Address)); |
<> | 144:ef7eb2e8f9f7 | 496 | } |
<> | 144:ef7eb2e8f9f7 | 497 | |
<> | 144:ef7eb2e8f9f7 | 498 | /* Set the USART address length */ |
<> | 144:ef7eb2e8f9f7 | 499 | MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, WakeUpSelection.AddressLength); |
<> | 144:ef7eb2e8f9f7 | 500 | |
<> | 144:ef7eb2e8f9f7 | 501 | /* Set the USART address node */ |
<> | 144:ef7eb2e8f9f7 | 502 | MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)WakeUpSelection.Address << UART_CR2_ADDRESS_LSB_POS)); |
<> | 144:ef7eb2e8f9f7 | 503 | } |
<> | 144:ef7eb2e8f9f7 | 504 | |
<> | 144:ef7eb2e8f9f7 | 505 | /** |
<> | 144:ef7eb2e8f9f7 | 506 | * @} |
<> | 144:ef7eb2e8f9f7 | 507 | */ |
<> | 144:ef7eb2e8f9f7 | 508 | |
<> | 144:ef7eb2e8f9f7 | 509 | #endif /* HAL_UART_MODULE_ENABLED */ |
<> | 144:ef7eb2e8f9f7 | 510 | |
<> | 144:ef7eb2e8f9f7 | 511 | /** |
<> | 144:ef7eb2e8f9f7 | 512 | * @} |
<> | 144:ef7eb2e8f9f7 | 513 | */ |
<> | 144:ef7eb2e8f9f7 | 514 | |
Anna Bridge |
186:707f6e361f3e | 515 | /** |
Anna Bridge |
186:707f6e361f3e | 516 | * @} |
Anna Bridge |
186:707f6e361f3e | 517 | */ |
Anna Bridge |
186:707f6e361f3e | 518 | |
<> | 144:ef7eb2e8f9f7 | 519 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
<> | 144:ef7eb2e8f9f7 | 520 |