STM32L4xx_HAL_Driver  1.14.0
stm32l4xx_hal_usart_ex.h
Go to the documentation of this file.
1 
20 /* Define to prevent recursive inclusion -------------------------------------*/
21 #ifndef STM32L4xx_HAL_USART_EX_H
22 #define STM32L4xx_HAL_USART_EX_H
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /* Includes ------------------------------------------------------------------*/
29 #include "stm32l4xx_hal_def.h"
30 
39 /* Exported types ------------------------------------------------------------*/
40 /* Exported constants --------------------------------------------------------*/
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)
56 
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
75 #endif /* USART_CR2_SLVEN */
76 
77 #if defined(USART_CR1_FIFOEN)
78 
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)
115 #endif /* USART_CR1_FIFOEN */
116 
121 /* Private macros ------------------------------------------------------------*/
131 #if defined (STM32L432xx) || defined (STM32L442xx)
132 #define USART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
133  do { \
134  if((__HANDLE__)->Instance == USART1) \
135  { \
136  switch(__HAL_RCC_GET_USART1_SOURCE()) \
137  { \
138  case RCC_USART1CLKSOURCE_PCLK2: \
139  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK2; \
140  break; \
141  case RCC_USART1CLKSOURCE_HSI: \
142  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \
143  break; \
144  case RCC_USART1CLKSOURCE_SYSCLK: \
145  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \
146  break; \
147  case RCC_USART1CLKSOURCE_LSE: \
148  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \
149  break; \
150  default: \
151  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \
152  break; \
153  } \
154  } \
155  else if((__HANDLE__)->Instance == USART2) \
156  { \
157  switch(__HAL_RCC_GET_USART2_SOURCE()) \
158  { \
159  case RCC_USART2CLKSOURCE_PCLK1: \
160  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1; \
161  break; \
162  case RCC_USART2CLKSOURCE_HSI: \
163  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \
164  break; \
165  case RCC_USART2CLKSOURCE_SYSCLK: \
166  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \
167  break; \
168  case RCC_USART2CLKSOURCE_LSE: \
169  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \
170  break; \
171  default: \
172  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \
173  break; \
174  } \
175  } \
176  else \
177  { \
178  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \
179  } \
180  } while(0)
181 #else
182 #define USART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
183  do { \
184  if((__HANDLE__)->Instance == USART1) \
185  { \
186  switch(__HAL_RCC_GET_USART1_SOURCE()) \
187  { \
188  case RCC_USART1CLKSOURCE_PCLK2: \
189  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK2; \
190  break; \
191  case RCC_USART1CLKSOURCE_HSI: \
192  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \
193  break; \
194  case RCC_USART1CLKSOURCE_SYSCLK: \
195  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \
196  break; \
197  case RCC_USART1CLKSOURCE_LSE: \
198  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \
199  break; \
200  default: \
201  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \
202  break; \
203  } \
204  } \
205  else if((__HANDLE__)->Instance == USART2) \
206  { \
207  switch(__HAL_RCC_GET_USART2_SOURCE()) \
208  { \
209  case RCC_USART2CLKSOURCE_PCLK1: \
210  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1; \
211  break; \
212  case RCC_USART2CLKSOURCE_HSI: \
213  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \
214  break; \
215  case RCC_USART2CLKSOURCE_SYSCLK: \
216  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \
217  break; \
218  case RCC_USART2CLKSOURCE_LSE: \
219  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \
220  break; \
221  default: \
222  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \
223  break; \
224  } \
225  } \
226  else if((__HANDLE__)->Instance == USART3) \
227  { \
228  switch(__HAL_RCC_GET_USART3_SOURCE()) \
229  { \
230  case RCC_USART3CLKSOURCE_PCLK1: \
231  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_PCLK1; \
232  break; \
233  case RCC_USART3CLKSOURCE_HSI: \
234  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_HSI; \
235  break; \
236  case RCC_USART3CLKSOURCE_SYSCLK: \
237  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_SYSCLK; \
238  break; \
239  case RCC_USART3CLKSOURCE_LSE: \
240  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_LSE; \
241  break; \
242  default: \
243  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \
244  break; \
245  } \
246  } \
247  else \
248  { \
249  (__CLOCKSOURCE__) = USART_CLOCKSOURCE_UNDEFINED; \
250  } \
251  } while(0)
252 #endif /* STM32L432xx || STM32L442xx */
253 
263 #define USART_MASK_COMPUTATION(__HANDLE__) \
264  do { \
265  if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_9B) \
266  { \
267  if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \
268  { \
269  (__HANDLE__)->Mask = 0x01FFU; \
270  } \
271  else \
272  { \
273  (__HANDLE__)->Mask = 0x00FFU; \
274  } \
275  } \
276  else if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_8B) \
277  { \
278  if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \
279  { \
280  (__HANDLE__)->Mask = 0x00FFU; \
281  } \
282  else \
283  { \
284  (__HANDLE__)->Mask = 0x007FU; \
285  } \
286  } \
287  else if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_7B) \
288  { \
289  if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \
290  { \
291  (__HANDLE__)->Mask = 0x007FU; \
292  } \
293  else \
294  { \
295  (__HANDLE__)->Mask = 0x003FU; \
296  } \
297  } \
298  else \
299  { \
300  (__HANDLE__)->Mask = 0x0000U; \
301  } \
302  } while(0U)
303 
304 
310 #define IS_USART_WORD_LENGTH(__LENGTH__) (((__LENGTH__) == USART_WORDLENGTH_7B) || \
311  ((__LENGTH__) == USART_WORDLENGTH_8B) || \
312  ((__LENGTH__) == USART_WORDLENGTH_9B))
313 
314 #if defined(USART_CR2_SLVEN)
315 
320 #define IS_USART_NSS(__NSS__) (((__NSS__) == USART_NSS_HARD) || \
321  ((__NSS__) == USART_NSS_SOFT))
322 
328 #define IS_USART_SLAVEMODE(__STATE__) (((__STATE__) == USART_SLAVEMODE_DISABLE ) || \
329  ((__STATE__) == USART_SLAVEMODE_ENABLE))
330 #endif /* USART_CR2_SLVEN */
331 
332 #if defined(USART_CR1_FIFOEN)
333 
338 #define IS_USART_FIFO_MODE_STATE(__STATE__) (((__STATE__) == USART_FIFOMODE_DISABLE ) || \
339  ((__STATE__) == USART_FIFOMODE_ENABLE))
340 
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))
352 
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))
364 #endif /* USART_CR1_FIFOEN */
365 
369 /* Exported functions --------------------------------------------------------*/
378 /* IO operation functions *****************************************************/
379 #if defined(USART_CR1_FIFOEN)
382 #endif /* USART_CR1_FIFOEN */
383 
392 /* Peripheral Control functions ***********************************************/
393 #if defined(USART_CR2_SLVEN)
394 HAL_StatusTypeDef HAL_USARTEx_EnableSlaveMode(USART_HandleTypeDef *husart);
395 HAL_StatusTypeDef HAL_USARTEx_DisableSlaveMode(USART_HandleTypeDef *husart);
396 HAL_StatusTypeDef HAL_USARTEx_ConfigNSS(USART_HandleTypeDef *husart, uint32_t NSSConfig);
397 #endif /* USART_CR2_SLVEN */
398 #if defined(USART_CR1_FIFOEN)
399 HAL_StatusTypeDef HAL_USARTEx_EnableFifoMode(USART_HandleTypeDef *husart);
400 HAL_StatusTypeDef HAL_USARTEx_DisableFifoMode(USART_HandleTypeDef *husart);
401 HAL_StatusTypeDef HAL_USARTEx_SetTxFifoThreshold(USART_HandleTypeDef *husart, uint32_t Threshold);
402 HAL_StatusTypeDef HAL_USARTEx_SetRxFifoThreshold(USART_HandleTypeDef *husart, uint32_t Threshold);
403 #endif /* USART_CR1_FIFOEN */
404 
421 #ifdef __cplusplus
422 }
423 #endif
424 
425 #endif /* STM32L4xx_HAL_USART_EX_H */
426 
427 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
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.