21 #ifndef STM32L4xx_HAL_USART_EX_H 22 #define STM32L4xx_HAL_USART_EX_H 48 #define USART_WORDLENGTH_7B ((uint32_t)USART_CR1_M1) 49 #define USART_WORDLENGTH_8B 0x00000000U 50 #define USART_WORDLENGTH_9B ((uint32_t)USART_CR1_M0) 55 #if defined(USART_CR2_SLVEN) 59 #define USART_NSS_HARD 0x00000000U 60 #define USART_NSS_SOFT USART_CR2_DIS_NSS 70 #define USART_SLAVEMODE_DISABLE 0x00000000U 71 #define USART_SLAVEMODE_ENABLE USART_CR2_SLVEN 77 #if defined(USART_CR1_FIFOEN) 82 #define USART_FIFOMODE_DISABLE 0x00000000U 83 #define USART_FIFOMODE_ENABLE USART_CR1_FIFOEN 92 #define USART_TXFIFO_THRESHOLD_1_8 0x00000000U 93 #define USART_TXFIFO_THRESHOLD_1_4 USART_CR3_TXFTCFG_0 94 #define USART_TXFIFO_THRESHOLD_1_2 USART_CR3_TXFTCFG_1 95 #define USART_TXFIFO_THRESHOLD_3_4 (USART_CR3_TXFTCFG_0|USART_CR3_TXFTCFG_1) 96 #define USART_TXFIFO_THRESHOLD_7_8 USART_CR3_TXFTCFG_2 97 #define USART_TXFIFO_THRESHOLD_8_8 (USART_CR3_TXFTCFG_2|USART_CR3_TXFTCFG_0) 106 #define USART_RXFIFO_THRESHOLD_1_8 0x00000000U 107 #define USART_RXFIFO_THRESHOLD_1_4 USART_CR3_RXFTCFG_0 108 #define USART_RXFIFO_THRESHOLD_1_2 USART_CR3_RXFTCFG_1 109 #define USART_RXFIFO_THRESHOLD_3_4 (USART_CR3_RXFTCFG_0|USART_CR3_RXFTCFG_1) 110 #define USART_RXFIFO_THRESHOLD_7_8 USART_CR3_RXFTCFG_2 111 #define USART_RXFIFO_THRESHOLD_8_8 (USART_CR3_RXFTCFG_2|USART_CR3_RXFTCFG_0) 131 #if defined (STM32L432xx) || defined (STM32L442xx) 132 #define USART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 134 if((__HANDLE__)->Instance == USART1) \ 136 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 138 case RCC_USART1CLKSOURCE_PCLK2: \ 139 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK2; \ 141 case RCC_USART1CLKSOURCE_HSI: \ 142 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \ 144 case RCC_USART1CLKSOURCE_SYSCLK: \ 145 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \ 147 case RCC_USART1CLKSOURCE_LSE: \ 148 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \ 151 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \ 155 else if((__HANDLE__)->Instance == USART2) \ 157 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 159 case RCC_USART2CLKSOURCE_PCLK1: \ 160 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1; \ 162 case RCC_USART2CLKSOURCE_HSI: \ 163 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \ 165 case RCC_USART2CLKSOURCE_SYSCLK: \ 166 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \ 168 case RCC_USART2CLKSOURCE_LSE: \ 169 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \ 172 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \ 178 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \ 182 #define USART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \ 184 if((__HANDLE__)->Instance == USART1) \ 186 switch(__HAL_RCC_GET_USART1_SOURCE()) \ 188 case RCC_USART1CLKSOURCE_PCLK2: \ 189 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK2; \ 191 case RCC_USART1CLKSOURCE_HSI: \ 192 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \ 194 case RCC_USART1CLKSOURCE_SYSCLK: \ 195 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \ 197 case RCC_USART1CLKSOURCE_LSE: \ 198 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \ 201 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \ 205 else if((__HANDLE__)->Instance == USART2) \ 207 switch(__HAL_RCC_GET_USART2_SOURCE()) \ 209 case RCC_USART2CLKSOURCE_PCLK1: \ 210 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1; \ 212 case RCC_USART2CLKSOURCE_HSI: \ 213 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \ 215 case RCC_USART2CLKSOURCE_SYSCLK: \ 216 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \ 218 case RCC_USART2CLKSOURCE_LSE: \ 219 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \ 222 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \ 226 else if((__HANDLE__)->Instance == USART3) \ 228 switch(__HAL_RCC_GET_USART3_SOURCE()) \ 230 case RCC_USART3CLKSOURCE_PCLK1: \ 231 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1; \ 233 case RCC_USART3CLKSOURCE_HSI: \ 234 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \ 236 case RCC_USART3CLKSOURCE_SYSCLK: \ 237 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \ 239 case RCC_USART3CLKSOURCE_LSE: \ 240 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \ 243 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \ 249 (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \ 263 #define USART_MASK_COMPUTATION(__HANDLE__) \ 265 if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_9B) \ 267 if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \ 269 (__HANDLE__)->Mask = 0x01FFU; \ 273 (__HANDLE__)->Mask = 0x00FFU; \ 276 else if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_8B) \ 278 if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \ 280 (__HANDLE__)->Mask = 0x00FFU; \ 284 (__HANDLE__)->Mask = 0x007FU; \ 287 else if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_7B) \ 289 if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \ 291 (__HANDLE__)->Mask = 0x007FU; \ 295 (__HANDLE__)->Mask = 0x003FU; \ 300 (__HANDLE__)->Mask = 0x0000U; \ 310 #define IS_USART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == USART_WORDLENGTH_7B) || \ 311 ((__LENGTH__) == USART_WORDLENGTH_8B) || \ 312 ((__LENGTH__) == USART_WORDLENGTH_9B)) 314 #if defined(USART_CR2_SLVEN) 320 #define IS_USART_NSS(__NSS__) (((__NSS__) == USART_NSS_HARD) || \ 321 ((__NSS__) == USART_NSS_SOFT)) 328 #define IS_USART_SLAVEMODE(__STATE__) (((__STATE__) == USART_SLAVEMODE_DISABLE ) || \ 329 ((__STATE__) == USART_SLAVEMODE_ENABLE)) 332 #if defined(USART_CR1_FIFOEN) 338 #define IS_USART_FIFO_MODE_STATE(__STATE__) (((__STATE__) == USART_FIFOMODE_DISABLE ) || \ 339 ((__STATE__) == USART_FIFOMODE_ENABLE)) 346 #define IS_USART_TXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == USART_TXFIFO_THRESHOLD_1_8) || \ 347 ((__THRESHOLD__) == USART_TXFIFO_THRESHOLD_1_4) || \ 348 ((__THRESHOLD__) == USART_TXFIFO_THRESHOLD_1_2) || \ 349 ((__THRESHOLD__) == USART_TXFIFO_THRESHOLD_3_4) || \ 350 ((__THRESHOLD__) == USART_TXFIFO_THRESHOLD_7_8) || \ 351 ((__THRESHOLD__) == USART_TXFIFO_THRESHOLD_8_8)) 358 #define IS_USART_RXFIFO_THRESHOLD(__THRESHOLD__) (((__THRESHOLD__) == USART_RXFIFO_THRESHOLD_1_8) || \ 359 ((__THRESHOLD__) == USART_RXFIFO_THRESHOLD_1_4) || \ 360 ((__THRESHOLD__) == USART_RXFIFO_THRESHOLD_1_2) || \ 361 ((__THRESHOLD__) == USART_RXFIFO_THRESHOLD_3_4) || \ 362 ((__THRESHOLD__) == USART_RXFIFO_THRESHOLD_7_8) || \ 363 ((__THRESHOLD__) == USART_RXFIFO_THRESHOLD_8_8)) 379 #if defined(USART_CR1_FIFOEN) 393 #if defined(USART_CR2_SLVEN) 398 #if defined(USART_CR1_FIFOEN) HAL_StatusTypeDef HAL_USARTEx_DisableSlaveMode(USART_HandleTypeDef *husart)
Disable the SPI slave mode.
HAL_StatusTypeDef HAL_USARTEx_SetTxFifoThreshold(USART_HandleTypeDef *husart, uint32_t Threshold)
Set the TXFIFO threshold.
HAL_StatusTypeDef HAL_USARTEx_ConfigNSS(USART_HandleTypeDef *husart, uint32_t NSSConfig)
Configure the Slave Select input pin (NSS).
HAL_StatusTypeDef HAL_USARTEx_EnableSlaveMode(USART_HandleTypeDef *husart)
Enable the SPI slave mode.
HAL_StatusTypeDef HAL_USARTEx_DisableFifoMode(USART_HandleTypeDef *husart)
Disable the FIFO mode.
void HAL_USARTEx_TxFifoEmptyCallback(USART_HandleTypeDef *husart)
USART TX Fifo empty callback.
This file contains HAL common defines, enumeration, macros and structures definitions.
USART handle Structure definition.
HAL_StatusTypeDef HAL_USARTEx_EnableFifoMode(USART_HandleTypeDef *husart)
Enable the FIFO mode.
void HAL_USARTEx_RxFifoFullCallback(USART_HandleTypeDef *husart)
USART RX Fifo full callback.
HAL_StatusTypeDef HAL_USARTEx_SetRxFifoThreshold(USART_HandleTypeDef *husart, uint32_t Threshold)
Set the RXFIFO threshold.