19 #if defined(USE_FULL_LL_DRIVER)
25 #ifdef USE_FULL_ASSERT
26 #include "stm32_assert.h"
28 #define assert_param(expr) ((void)0U)
35 #if defined (USART1) || defined (USART2) || defined (USART3) || defined (USART6) || defined (UART4) || defined (UART5) || defined (UART7) || defined (UART8) || defined (UART9) || defined (UART10)
60 #define IS_LL_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) <= 12500000U)
63 #define IS_LL_USART_BRR_MIN(__VALUE__) ((__VALUE__) >= 16U)
65 #define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \
66 || ((__VALUE__) == LL_USART_DIRECTION_RX) \
67 || ((__VALUE__) == LL_USART_DIRECTION_TX) \
68 || ((__VALUE__) == LL_USART_DIRECTION_TX_RX))
70 #define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \
71 || ((__VALUE__) == LL_USART_PARITY_EVEN) \
72 || ((__VALUE__) == LL_USART_PARITY_ODD))
74 #define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_8B) \
75 || ((__VALUE__) == LL_USART_DATAWIDTH_9B))
77 #define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \
78 || ((__VALUE__) == LL_USART_OVERSAMPLING_8))
80 #define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \
81 || ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT))
83 #define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \
84 || ((__VALUE__) == LL_USART_PHASE_2EDGE))
86 #define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \
87 || ((__VALUE__) == LL_USART_POLARITY_HIGH))
89 #define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \
90 || ((__VALUE__) == LL_USART_CLOCK_ENABLE))
92 #define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \
93 || ((__VALUE__) == LL_USART_STOPBITS_1) \
94 || ((__VALUE__) == LL_USART_STOPBITS_1_5) \
95 || ((__VALUE__) == LL_USART_STOPBITS_2))
97 #define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \
98 || ((__VALUE__) == LL_USART_HWCONTROL_RTS) \
99 || ((__VALUE__) == LL_USART_HWCONTROL_CTS) \
100 || ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS))
126 ErrorStatus status = SUCCESS;
129 assert_param(IS_UART_INSTANCE(USARTx));
131 if (USARTx == USART1)
139 else if (USARTx == USART2)
148 else if (USARTx == USART3)
158 else if (USARTx == USART6)
168 else if (USARTx == UART4)
178 else if (USARTx == UART5)
188 else if (USARTx == UART7)
198 else if (USARTx == UART8)
208 else if (USARTx == UART9)
218 else if (USARTx == UART10)
250 ErrorStatus status = ERROR;
251 uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO;
255 assert_param(IS_UART_INSTANCE(USARTx));
256 assert_param(IS_LL_USART_BAUDRATE(USART_InitStruct->
BaudRate));
257 assert_param(IS_LL_USART_DATAWIDTH(USART_InitStruct->
DataWidth));
258 assert_param(IS_LL_USART_STOPBITS(USART_InitStruct->
StopBits));
259 assert_param(IS_LL_USART_PARITY(USART_InitStruct->
Parity));
262 assert_param(IS_LL_USART_OVERSAMPLING(USART_InitStruct->
OverSampling));
275 MODIFY_REG(USARTx->CR1,
276 (USART_CR1_M | USART_CR1_PCE | USART_CR1_PS |
277 USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8),
298 if (USARTx == USART1)
302 else if (USARTx == USART2)
307 else if (USARTx == USART3)
313 else if (USARTx == USART6)
319 else if (USARTx == UART4)
325 else if (USARTx == UART5)
331 else if (USARTx == UART7)
337 else if (USARTx == UART8)
343 else if (USARTx == UART9)
349 else if (USARTx == UART10)
363 if ((periphclk != LL_RCC_PERIPH_FREQUENCY_NO)
364 && (USART_InitStruct->
BaudRate != 0U))
373 assert_param(IS_LL_USART_BRR_MIN(USARTx->BRR));
392 USART_InitStruct->
DataWidth = LL_USART_DATAWIDTH_8B;
393 USART_InitStruct->
StopBits = LL_USART_STOPBITS_1;
394 USART_InitStruct->
Parity = LL_USART_PARITY_NONE ;
397 USART_InitStruct->
OverSampling = LL_USART_OVERSAMPLING_16;
414 ErrorStatus status = SUCCESS;
417 assert_param(IS_UART_INSTANCE(USARTx));
418 assert_param(IS_LL_USART_CLOCKOUTPUT(USART_ClockInitStruct->
ClockOutput));
426 if (USART_ClockInitStruct->
ClockOutput == LL_USART_CLOCK_DISABLE)
436 assert_param(IS_USART_INSTANCE(USARTx));
439 assert_param(IS_LL_USART_CLOCKPOLARITY(USART_ClockInitStruct->
ClockPolarity));
440 assert_param(IS_LL_USART_CLOCKPHASE(USART_ClockInitStruct->
ClockPhase));
441 assert_param(IS_LL_USART_LASTBITCLKOUTPUT(USART_ClockInitStruct->
LastBitClockPulse));
450 MODIFY_REG(USARTx->CR2,
451 USART_CR2_CLKEN | USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL,
474 USART_ClockInitStruct->
ClockOutput = LL_USART_CLOCK_DISABLE;
475 USART_ClockInitStruct->
ClockPolarity = LL_USART_POLARITY_LOW;
476 USART_ClockInitStruct->
ClockPhase = LL_USART_PHASE_1EDGE;
__STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs)
Force APB1 peripherals reset. @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset APB1RSTR TIM3RST LL_A...
__STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)
Release APB1 peripherals reset. @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset APB1RSTR TIM3RST ...
__STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)
Release APB2 peripherals reset. @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset APB2RSTR TIM8RST ...
__STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs)
Force APB2 peripherals reset. @rmtoll APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset APB2RSTR TIM8RST LL_A...
RCC Clocks Frequency Structure.
void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks)
Return the frequencies of different on chip clocks; System, AHB, APB1 and APB2 buses clocks.
__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling, uint32_t BaudRate)
Configure USART BRR register for achieving expected Baud Rate value.
__STATIC_INLINE void LL_USART_DisableSCLKOutput(USART_TypeDef *USARTx)
Disable Clock output on SCLK pin.
__STATIC_INLINE void LL_USART_SetStopBitsLength(USART_TypeDef *USARTx, uint32_t StopBits)
Set the length of the stop bits @rmtoll CR2 STOP LL_USART_SetStopBitsLength.
__STATIC_INLINE uint32_t LL_USART_IsEnabled(const USART_TypeDef *USARTx)
Indicate if USART is enabled @rmtoll CR1 UE LL_USART_IsEnabled.
__STATIC_INLINE void LL_USART_SetHWFlowCtrl(USART_TypeDef *USARTx, uint32_t HardwareFlowControl)
Configure HW Flow Control mode (both CTS and RTS)
void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct)
Set each LL_USART_InitTypeDef field to default value.
void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct)
Set each field of a LL_USART_ClockInitTypeDef type structure to default value.
ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, const LL_USART_ClockInitTypeDef *USART_ClockInitStruct)
Initialize USART Clock related settings according to the specified parameters in the USART_ClockInitS...
ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, const LL_USART_InitTypeDef *USART_InitStruct)
Initialize USART registers according to the specified parameters in USART_InitStruct.
ErrorStatus LL_USART_DeInit(const USART_TypeDef *USARTx)
De-initialize USART registers (Registers restored to their default values).
uint32_t HardwareFlowControl
uint32_t TransferDirection
uint32_t LastBitClockPulse
LL USART Clock Init Structure definition.
LL USART Init Structure definition.
Header file of BUS LL module.
Header file of RCC LL module.
Header file of USART LL module.