Initialization and Configuration functions.
More...
Initialization and Configuration functions.
===============================================================================
##### Initialization and Configuration functions #####
===============================================================================
[..]
This subsection provides a set of functions allowing to initialize the USARTx or the UARTy
in asynchronous mode.
(+) For the asynchronous mode the parameters below 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.
(++) Hardware flow control
(++) Receiver/transmitter modes
(++) Over Sampling Method
(++) One-Bit Sampling Method
(+) For the asynchronous mode, the following advanced features can be configured as well:
(++) TX and/or RX pin level inversion
(++) data logical level inversion
(++) RX and TX pins swap
(++) RX overrun detection disabling
(++) DMA disabling on RX error
(++) MSB first on communication line
(++) auto Baud rate detection
[..]
The HAL_UART_Init(), HAL_HalfDuplex_Init(), HAL_LIN_Init()and HAL_MultiProcessor_Init()API
follow respectively the UART asynchronous, UART Half duplex, UART LIN mode
and UART multiprocessor mode configuration procedures (details for the procedures
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 UART formats are listed in the following table.
Table 1. UART frame format. +--------------------------------------------------------------------—+ | M1 bit | M0 bit | PCE bit | UART 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 | | +--------------------------------------------------------------------—+
◆ HAL_HalfDuplex_Init()
Initialize the half-duplex mode according to the specified parameters in the UART_InitTypeDef and creates the associated handle.
- Parameters
-
- Return values
-
Definition at line 381 of file stm32l4xx_hal_uart.c.
392 if (huart->
gState == HAL_UART_STATE_RESET)
397 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 413 huart->
gState = HAL_UART_STATE_BUSY;
415 __HAL_UART_DISABLE(huart);
435 SET_BIT(huart->
Instance->CR3, USART_CR3_HDSEL);
437 __HAL_UART_ENABLE(huart);
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
Check the UART Idle State.
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral advanced features.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
Initialize the UART MSP.
UART_AdvFeatureInitTypeDef AdvancedInit
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)
Initialize the callbacks to their default values.
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
__IO HAL_UART_StateTypeDef gState
◆ HAL_LIN_Init()
Initialize the LIN mode according to the specified parameters in the UART_InitTypeDef and creates the associated handle.
- Parameters
-
| huart | UART handle. |
| BreakDetectLength | Specifies the LIN break detection length. This parameter can be one of the following values:
- UART_LINBREAKDETECTLENGTH_10B 10-bit break detection
- UART_LINBREAKDETECTLENGTH_11B 11-bit break detection
|
- Return values
-
Definition at line 454 of file stm32l4xx_hal_uart.c.
465 assert_param(IS_UART_LIN_BREAK_DETECT_LENGTH(BreakDetectLength));
478 if (huart->
gState == HAL_UART_STATE_RESET)
483 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 499 huart->
gState = HAL_UART_STATE_BUSY;
501 __HAL_UART_DISABLE(huart);
518 CLEAR_BIT(huart->
Instance->CR3, (USART_CR3_HDSEL | USART_CR3_IREN | USART_CR3_SCEN));
521 SET_BIT(huart->
Instance->CR2, USART_CR2_LINEN);
526 __HAL_UART_ENABLE(huart);
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
Check the UART Idle State.
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral advanced features.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
Initialize the UART MSP.
UART_AdvFeatureInitTypeDef AdvancedInit
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)
Initialize the callbacks to their default values.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
__IO HAL_UART_StateTypeDef gState
◆ HAL_MultiProcessor_Init()
| HAL_StatusTypeDef HAL_MultiProcessor_Init |
( |
UART_HandleTypeDef * |
huart, |
|
|
uint8_t |
Address, |
|
|
uint32_t |
WakeUpMethod |
|
) |
| |
Initialize the multiprocessor mode according to the specified parameters in the UART_InitTypeDef and initialize the associated handle.
- Parameters
-
| huart | UART handle. |
| Address | UART node address (4-, 6-, 7- or 8-bit long). |
| WakeUpMethod | Specifies the UART wakeup method. This parameter can be one of the following values:
- UART_WAKEUPMETHOD_IDLELINE WakeUp by an idle line detection
- UART_WAKEUPMETHOD_ADDRESSMARK WakeUp by an address mark
|
- Note
- If the user resorts to idle line detection wake up, the Address parameter is useless and ignored by the initialization function.
-
If the user resorts to address mark wake up, the address length detection is configured by default to 4 bits only. For the UART to be able to manage 6-, 7- or 8-bit long addresses detection, the API HAL_MultiProcessorEx_AddressLength_Set() must be called after HAL_MultiProcessor_Init().
- Return values
-
Definition at line 551 of file stm32l4xx_hal_uart.c.
562 if (huart->
gState == HAL_UART_STATE_RESET)
567 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 583 huart->
gState = HAL_UART_STATE_BUSY;
585 __HAL_UART_DISABLE(huart);
602 CLEAR_BIT(huart->
Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
604 if (WakeUpMethod == UART_WAKEUPMETHOD_ADDRESSMARK)
607 MODIFY_REG(huart->
Instance->CR2, USART_CR2_ADD, ((uint32_t)Address << UART_CR2_ADDRESS_LSB_POS));
613 __HAL_UART_ENABLE(huart);
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
Check the UART Idle State.
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral advanced features.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
Initialize the UART MSP.
UART_AdvFeatureInitTypeDef AdvancedInit
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)
Initialize the callbacks to their default values.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
__IO HAL_UART_StateTypeDef gState
◆ HAL_UART_DeInit()
DeInitialize the UART peripheral.
- Parameters
-
- Return values
-
Definition at line 625 of file stm32l4xx_hal_uart.c.
636 huart->
gState = HAL_UART_STATE_BUSY;
638 __HAL_UART_DISABLE(huart);
644 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 657 huart->
gState = HAL_UART_STATE_RESET;
658 huart->
RxState = HAL_UART_STATE_RESET;
__IO HAL_UART_StateTypeDef RxState
void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
DeInitialize the UART MSP.
void(* MspDeInitCallback)(struct __UART_HandleTypeDef *huart)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
__IO HAL_UART_StateTypeDef gState
◆ HAL_UART_Init()
Initialize the UART mode according to the specified parameters in the UART_InitTypeDef and initialize the associated handle.
- Parameters
-
- Return values
-
Definition at line 308 of file stm32l4xx_hal_uart.c.
327 if (huart->
gState == HAL_UART_STATE_RESET)
332 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1) 348 huart->
gState = HAL_UART_STATE_BUSY;
350 __HAL_UART_DISABLE(huart);
367 CLEAR_BIT(huart->
Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
369 __HAL_UART_ENABLE(huart);
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
Check the UART Idle State.
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral advanced features.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
Initialize the UART MSP.
UART_AdvFeatureInitTypeDef AdvancedInit
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)
Initialize the callbacks to their default values.
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
Configure the UART peripheral.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
__IO HAL_UART_StateTypeDef gState
◆ HAL_UART_MspDeInit()
◆ HAL_UART_MspInit()
◆ HAL_UART_RegisterCallback()
Register a User UART Callback To be used instead of the weak predefined callback.
- Parameters
-
| huart | uart handle |
| CallbackID | ID of the callback to be registered This parameter can be one of the following values:
|
| pCallback | pointer to the Callback function |
- Return values
-
Definition at line 718 of file stm32l4xx_hal_uart.c.
721 HAL_StatusTypeDef status =
HAL_OK;
723 if (pCallback == NULL)
725 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
732 if (huart->
gState == HAL_UART_STATE_READY)
772 #if defined(USART_CR1_FIFOEN) 791 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
797 else if (huart->
gState == HAL_UART_STATE_RESET)
810 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
818 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
void(* TxFifoEmptyCallback)(struct __UART_HandleTypeDef *huart)
void(* RxCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* RxHalfCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* WakeupCallback)(struct __UART_HandleTypeDef *huart)
void(* TxCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* TxHalfCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void(* ErrorCallback)(struct __UART_HandleTypeDef *huart)
void(* RxFifoFullCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* MspDeInitCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortTransmitCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortReceiveCpltCallback)(struct __UART_HandleTypeDef *huart)
__IO HAL_UART_StateTypeDef gState
◆ HAL_UART_UnRegisterCallback()
Unregister an UART Callback UART callaback is redirected to the weak predefined callback.
- Parameters
-
| huart | uart handle |
| CallbackID | ID of the callback to be unregistered This parameter can be one of the following values:
|
- Return values
-
Definition at line 849 of file stm32l4xx_hal_uart.c.
851 HAL_StatusTypeDef status =
HAL_OK;
855 if (HAL_UART_STATE_READY == huart->
gState)
895 #if defined(USART_CR1_FIFOEN) 914 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
920 else if (HAL_UART_STATE_RESET == huart->
gState)
933 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
941 huart->
ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
void(* TxFifoEmptyCallback)(struct __UART_HandleTypeDef *huart)
void HAL_UARTEx_TxFifoEmptyCallback(UART_HandleTypeDef *huart)
UART TX Fifo empty callback.
void(* RxCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* RxHalfCpltCallback)(struct __UART_HandleTypeDef *huart)
void HAL_UART_TxHalfCpltCallback(UART_HandleTypeDef *huart)
Tx Half Transfer completed callback.
void HAL_UART_AbortCpltCallback(UART_HandleTypeDef *huart)
UART Abort Complete callback.
void HAL_UARTEx_RxFifoFullCallback(UART_HandleTypeDef *huart)
UART RX Fifo full callback.
void(* WakeupCallback)(struct __UART_HandleTypeDef *huart)
void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
UART Abort Receive Complete callback.
void HAL_UART_MspInit(UART_HandleTypeDef *huart)
Initialize the UART MSP.
void(* TxCpltCallback)(struct __UART_HandleTypeDef *huart)
void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
Rx Half Transfer completed callback.
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
Rx Transfer completed callback.
void(* TxHalfCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* MspInitCallback)(struct __UART_HandleTypeDef *huart)
void(* ErrorCallback)(struct __UART_HandleTypeDef *huart)
void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
UART wakeup from Stop mode callback.
void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
DeInitialize the UART MSP.
void HAL_UART_AbortTransmitCpltCallback(UART_HandleTypeDef *huart)
UART Abort Complete callback.
void(* RxFifoFullCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* MspDeInitCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortTransmitCpltCallback)(struct __UART_HandleTypeDef *huart)
void(* AbortReceiveCpltCallback)(struct __UART_HandleTypeDef *huart)
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
Tx Transfer completed callback.
__IO HAL_UART_StateTypeDef gState
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
UART error callback.