STM32L4xx_HAL_Driver  1.14.0
Initialization and de-initialization functions

Initialization and Configuration functions. More...

Functions

HAL_StatusTypeDef HAL_USART_Init (USART_HandleTypeDef *husart)
 Initialize the USART mode according to the specified parameters in the USART_InitTypeDef and initialize the associated handle. More...
 
HAL_StatusTypeDef HAL_USART_DeInit (USART_HandleTypeDef *husart)
 DeInitialize the USART peripheral. More...
 
void HAL_USART_MspInit (USART_HandleTypeDef *husart)
 Initialize the USART MSP. More...
 
void HAL_USART_MspDeInit (USART_HandleTypeDef *husart)
 DeInitialize the USART MSP. More...
 
HAL_StatusTypeDef HAL_USART_RegisterCallback (USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeDef CallbackID, pUSART_CallbackTypeDef pCallback)
 Register a User USART Callback To be used instead of the weak predefined callback. More...
 
HAL_StatusTypeDef HAL_USART_UnRegisterCallback (USART_HandleTypeDef *husart, HAL_USART_CallbackIDTypeDef CallbackID)
 Unregister an UART Callback UART callaback is redirected to the weak predefined callback. More...
 

Detailed Description

Initialization and Configuration functions.

 ===============================================================================
            ##### Initialization and Configuration functions #####
 ===============================================================================
    [..]
    This subsection provides a set of functions allowing to initialize the USART
    in asynchronous and in synchronous modes.
      (+) For the asynchronous mode only these parameters can be configured:
        (++) Baud Rate
        (++) Word Length
        (++) Stop Bit
        (++) Parity: If the parity is enabled, then the MSB bit of the data written
             in the data register is transmitted but is changed by the parity bit.
        (++) USART polarity
        (++) USART phase
        (++) USART LastBit
        (++) Receiver/transmitter modes

    [..]
    The HAL_USART_Init() function follows the USART  synchronous configuration
    procedure (details for the procedure are available in reference manual).

Depending on the frame length defined by the M1 and M0 bits (7-bit, 8-bit or 9-bit), the possible USART formats are listed in the following table.

Table 1. USART frame format. +--------------------------------------------------------------------—+ | M1 bit | M0 bit | PCE bit | USART frame | |------—|------—|--------—|------------------------------------—| | 0 | 0 | 0 | | SB | 8 bit data | STB | | |------—|------—|--------—|------------------------------------—| | 0 | 0 | 1 | | SB | 7 bit data | PB | STB | | |------—|------—|--------—|------------------------------------—| | 0 | 1 | 0 | | SB | 9 bit data | STB | | |------—|------—|--------—|------------------------------------—| | 0 | 1 | 1 | | SB | 8 bit data | PB | STB | | |------—|------—|--------—|------------------------------------—| | 1 | 0 | 0 | | SB | 7 bit data | STB | | |------—|------—|--------—|------------------------------------—| | 1 | 0 | 1 | | SB | 6 bit data | PB | STB | | +--------------------------------------------------------------------—+

Function Documentation

◆ HAL_USART_DeInit()

HAL_StatusTypeDef HAL_USART_DeInit ( USART_HandleTypeDef husart)

DeInitialize the USART peripheral.

Parameters
husartUSART handle.
Return values
HALstatus

Definition at line 347 of file stm32l4xx_hal_usart.c.

348 {
349  /* Check the USART handle allocation */
350  if (husart == NULL)
351  {
352  return HAL_ERROR;
353  }
354 
355  /* Check the parameters */
356  assert_param(IS_USART_INSTANCE(husart->Instance));
357 
358  husart->State = HAL_USART_STATE_BUSY;
359 
360  husart->Instance->CR1 = 0x0U;
361  husart->Instance->CR2 = 0x0U;
362  husart->Instance->CR3 = 0x0U;
363 
364 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1)
365  if (husart->MspDeInitCallback == NULL)
366  {
368  }
369  /* DeInit the low level hardware */
370  husart->MspDeInitCallback(husart);
371 #else
372  /* DeInit the low level hardware */
373  HAL_USART_MspDeInit(husart);
374 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */
375 
376  husart->ErrorCode = HAL_USART_ERROR_NONE;
377  husart->State = HAL_USART_STATE_RESET;
378 
379  /* Process Unlock */
380  __HAL_UNLOCK(husart);
381 
382  return HAL_OK;
383 }
__IO HAL_USART_StateTypeDef State
void(* MspDeInitCallback)(struct __USART_HandleTypeDef *husart)
__HAL_UNLOCK(hrtc)
return HAL_OK
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
void HAL_USART_MspDeInit(USART_HandleTypeDef *husart)
DeInitialize the USART MSP.

◆ HAL_USART_Init()

HAL_StatusTypeDef HAL_USART_Init ( USART_HandleTypeDef husart)

Initialize the USART mode according to the specified parameters in the USART_InitTypeDef and initialize the associated handle.

Parameters
husartUSART handle.
Return values
HALstatus

Definition at line 286 of file stm32l4xx_hal_usart.c.

287 {
288  /* Check the USART handle allocation */
289  if (husart == NULL)
290  {
291  return HAL_ERROR;
292  }
293 
294  /* Check the parameters */
295  assert_param(IS_USART_INSTANCE(husart->Instance));
296 
297  if (husart->State == HAL_USART_STATE_RESET)
298  {
299  /* Allocate lock resource and initialize it */
300  husart->Lock = HAL_UNLOCKED;
301 
302 #if (USE_HAL_USART_REGISTER_CALLBACKS == 1)
304 
305  if (husart->MspInitCallback == NULL)
306  {
308  }
309 
310  /* Init the low level hardware */
311  husart->MspInitCallback(husart);
312 #else
313  /* Init the low level hardware : GPIO, CLOCK */
314  HAL_USART_MspInit(husart);
315 #endif /* USE_HAL_USART_REGISTER_CALLBACKS */
316  }
317 
318  husart->State = HAL_USART_STATE_BUSY;
319 
320  /* Disable the Peripheral */
321  __HAL_USART_DISABLE(husart);
322 
323  /* Set the Usart Communication parameters */
324  if (USART_SetConfig(husart) == HAL_ERROR)
325  {
326  return HAL_ERROR;
327  }
328 
329  /* In Synchronous mode, the following bits must be kept cleared:
330  - LINEN bit in the USART_CR2 register
331  - HDSEL, SCEN and IREN bits in the USART_CR3 register.*/
332  husart->Instance->CR2 &= ~USART_CR2_LINEN;
333  husart->Instance->CR3 &= ~(USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN);
334 
335  /* Enable the Peripheral */
336  __HAL_USART_ENABLE(husart);
337 
338  /* TEACK and/or REACK to check before moving husart->State to Ready */
339  return (USART_CheckIdleState(husart));
340 }
__IO HAL_USART_StateTypeDef State
void USART_InitCallbacksToDefault(USART_HandleTypeDef *husart)
Initialize the callbacks to their default values.
void HAL_USART_MspInit(USART_HandleTypeDef *husart)
Initialize the USART MSP.
static HAL_StatusTypeDef USART_SetConfig(USART_HandleTypeDef *husart)
Configure the USART peripheral.
static HAL_StatusTypeDef USART_CheckIdleState(USART_HandleTypeDef *husart)
Check the USART Idle State.
void(* MspInitCallback)(struct __USART_HandleTypeDef *husart)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_USART_MspDeInit()

__weak void HAL_USART_MspDeInit ( USART_HandleTypeDef husart)

DeInitialize the USART MSP.

Parameters
husartUSART handle.
Return values
None

Definition at line 405 of file stm32l4xx_hal_usart.c.

406 {
407  /* Prevent unused argument(s) compilation warning */
408  UNUSED(husart);
409 
410  /* NOTE : This function should not be modified, when the callback is needed,
411  the HAL_USART_MspDeInit can be implemented in the user file
412  */
413 }

◆ HAL_USART_MspInit()

__weak void HAL_USART_MspInit ( USART_HandleTypeDef husart)

Initialize the USART MSP.

Parameters
husartUSART handle.
Return values
None

Definition at line 390 of file stm32l4xx_hal_usart.c.

391 {
392  /* Prevent unused argument(s) compilation warning */
393  UNUSED(husart);
394 
395  /* NOTE : This function should not be modified, when the callback is needed,
396  the HAL_USART_MspInit can be implemented in the user file
397  */
398 }

◆ HAL_USART_RegisterCallback()

HAL_StatusTypeDef HAL_USART_RegisterCallback ( USART_HandleTypeDef husart,
HAL_USART_CallbackIDTypeDef  CallbackID,
pUSART_CallbackTypeDef  pCallback 
)

Register a User USART Callback To be used instead of the weak predefined callback.

Parameters
husartusart handle
CallbackIDID of the callback to be registered This parameter can be one of the following values:
pCallbackpointer to the Callback function
Return values
HALstatus

Definition at line 436 of file stm32l4xx_hal_usart.c.

438 {
439  HAL_StatusTypeDef status = HAL_OK;
440 
441  if (pCallback == NULL)
442  {
443  /* Update the error code */
444  husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK;
445 
446  return HAL_ERROR;
447  }
448  /* Process locked */
449  __HAL_LOCK(husart);
450 
451  if (husart->State == HAL_USART_STATE_READY)
452  {
453  switch (CallbackID)
454  {
456  husart->TxHalfCpltCallback = pCallback;
457  break;
458 
460  husart->TxCpltCallback = pCallback;
461  break;
462 
464  husart->RxHalfCpltCallback = pCallback;
465  break;
466 
468  husart->RxCpltCallback = pCallback;
469  break;
470 
472  husart->TxRxCpltCallback = pCallback;
473  break;
474 
475  case HAL_USART_ERROR_CB_ID :
476  husart->ErrorCallback = pCallback;
477  break;
478 
480  husart->AbortCpltCallback = pCallback;
481  break;
482 
483 #if defined(USART_CR1_FIFOEN)
485  husart->RxFifoFullCallback = pCallback;
486  break;
487 
489  husart->TxFifoEmptyCallback = pCallback;
490  break;
491 #endif /* USART_CR1_FIFOEN */
492 
494  husart->MspInitCallback = pCallback;
495  break;
496 
498  husart->MspDeInitCallback = pCallback;
499  break;
500 
501  default :
502  /* Update the error code */
503  husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK;
504 
505  /* Return error status */
506  status = HAL_ERROR;
507  break;
508  }
509  }
510  else if (husart->State == HAL_USART_STATE_RESET)
511  {
512  switch (CallbackID)
513  {
515  husart->MspInitCallback = pCallback;
516  break;
517 
519  husart->MspDeInitCallback = pCallback;
520  break;
521 
522  default :
523  /* Update the error code */
524  husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK;
525 
526  /* Return error status */
527  status = HAL_ERROR;
528  break;
529  }
530  }
531  else
532  {
533  /* Update the error code */
534  husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK;
535 
536  /* Return error status */
537  status = HAL_ERROR;
538  }
539 
540  /* Release Lock */
541  __HAL_UNLOCK(husart);
542 
543  return status;
544 }
__IO HAL_USART_StateTypeDef State
void(* MspDeInitCallback)(struct __USART_HandleTypeDef *husart)
void(* TxFifoEmptyCallback)(struct __USART_HandleTypeDef *husart)
void(* TxHalfCpltCallback)(struct __USART_HandleTypeDef *husart)
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
void(* ErrorCallback)(struct __USART_HandleTypeDef *husart)
return HAL_OK
void(* RxHalfCpltCallback)(struct __USART_HandleTypeDef *husart)
void(* RxCpltCallback)(struct __USART_HandleTypeDef *husart)
void(* MspInitCallback)(struct __USART_HandleTypeDef *husart)
void(* RxFifoFullCallback)(struct __USART_HandleTypeDef *husart)
void(* TxRxCpltCallback)(struct __USART_HandleTypeDef *husart)
void(* AbortCpltCallback)(struct __USART_HandleTypeDef *husart)
void(* TxCpltCallback)(struct __USART_HandleTypeDef *husart)

◆ HAL_USART_UnRegisterCallback()

HAL_StatusTypeDef HAL_USART_UnRegisterCallback ( USART_HandleTypeDef husart,
HAL_USART_CallbackIDTypeDef  CallbackID 
)

Unregister an UART Callback UART callaback is redirected to the weak predefined callback.

Parameters
husartuart handle
CallbackIDID of the callback to be unregistered This parameter can be one of the following values:
Return values
HALstatus

Definition at line 565 of file stm32l4xx_hal_usart.c.

566 {
567  HAL_StatusTypeDef status = HAL_OK;
568 
569  /* Process locked */
570  __HAL_LOCK(husart);
571 
572  if (HAL_USART_STATE_READY == husart->State)
573  {
574  switch (CallbackID)
575  {
577  husart->TxHalfCpltCallback = HAL_USART_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */
578  break;
579 
581  husart->TxCpltCallback = HAL_USART_TxCpltCallback; /* Legacy weak TxCpltCallback */
582  break;
583 
585  husart->RxHalfCpltCallback = HAL_USART_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */
586  break;
587 
589  husart->RxCpltCallback = HAL_USART_RxCpltCallback; /* Legacy weak RxCpltCallback */
590  break;
591 
593  husart->TxRxCpltCallback = HAL_USART_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */
594  break;
595 
596  case HAL_USART_ERROR_CB_ID :
597  husart->ErrorCallback = HAL_USART_ErrorCallback; /* Legacy weak ErrorCallback */
598  break;
599 
601  husart->AbortCpltCallback = HAL_USART_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
602  break;
603 
604 #if defined(USART_CR1_FIFOEN)
606  husart->RxFifoFullCallback = HAL_USARTEx_RxFifoFullCallback; /* Legacy weak RxFifoFullCallback */
607  break;
608 
610  husart->TxFifoEmptyCallback = HAL_USARTEx_TxFifoEmptyCallback; /* Legacy weak TxFifoEmptyCallback */
611  break;
612 #endif /* USART_CR1_FIFOEN */
613 
615  husart->MspInitCallback = HAL_USART_MspInit; /* Legacy weak MspInitCallback */
616  break;
617 
619  husart->MspDeInitCallback = HAL_USART_MspDeInit; /* Legacy weak MspDeInitCallback */
620  break;
621 
622  default :
623  /* Update the error code */
624  husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK;
625 
626  /* Return error status */
627  status = HAL_ERROR;
628  break;
629  }
630  }
631  else if (HAL_USART_STATE_RESET == husart->State)
632  {
633  switch (CallbackID)
634  {
637  break;
638 
641  break;
642 
643  default :
644  /* Update the error code */
645  husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK;
646 
647  /* Return error status */
648  status = HAL_ERROR;
649  break;
650  }
651  }
652  else
653  {
654  /* Update the error code */
655  husart->ErrorCode |= HAL_USART_ERROR_INVALID_CALLBACK;
656 
657  /* Return error status */
658  status = HAL_ERROR;
659  }
660 
661  /* Release Lock */
662  __HAL_UNLOCK(husart);
663 
664  return status;
665 }
__IO HAL_USART_StateTypeDef State
void(* MspDeInitCallback)(struct __USART_HandleTypeDef *husart)
void(* TxFifoEmptyCallback)(struct __USART_HandleTypeDef *husart)
void HAL_USART_MspInit(USART_HandleTypeDef *husart)
Initialize the USART MSP.
void(* TxHalfCpltCallback)(struct __USART_HandleTypeDef *husart)
void HAL_USART_TxHalfCpltCallback(USART_HandleTypeDef *husart)
Tx Half Transfer completed callback.
void HAL_USARTEx_TxFifoEmptyCallback(USART_HandleTypeDef *husart)
USART TX Fifo empty callback.
__HAL_UNLOCK(hrtc)
void HAL_USART_RxCpltCallback(USART_HandleTypeDef *husart)
Rx Transfer completed callback.
void HAL_USART_TxCpltCallback(USART_HandleTypeDef *husart)
Tx Transfer completed callback.
__HAL_LOCK(hrtc)
void(* ErrorCallback)(struct __USART_HandleTypeDef *husart)
return HAL_OK
void(* RxHalfCpltCallback)(struct __USART_HandleTypeDef *husart)
void HAL_USART_RxHalfCpltCallback(USART_HandleTypeDef *husart)
Rx Half Transfer completed callback.
void(* RxCpltCallback)(struct __USART_HandleTypeDef *husart)
void(* MspInitCallback)(struct __USART_HandleTypeDef *husart)
void(* RxFifoFullCallback)(struct __USART_HandleTypeDef *husart)
void HAL_USART_AbortCpltCallback(USART_HandleTypeDef *husart)
USART Abort Complete callback.
void HAL_USART_ErrorCallback(USART_HandleTypeDef *husart)
USART error callback.
void HAL_USART_TxRxCpltCallback(USART_HandleTypeDef *husart)
Tx/Rx Transfers completed callback for the non-blocking process.
void(* TxRxCpltCallback)(struct __USART_HandleTypeDef *husart)
void(* AbortCpltCallback)(struct __USART_HandleTypeDef *husart)
void HAL_USARTEx_RxFifoFullCallback(USART_HandleTypeDef *husart)
USART RX Fifo full callback.
void(* TxCpltCallback)(struct __USART_HandleTypeDef *husart)
void HAL_USART_MspDeInit(USART_HandleTypeDef *husart)
DeInitialize the USART MSP.