20#ifndef __STM32F4xx_LL_USART_H
21#define __STM32F4xx_LL_USART_H
34#if defined (USART1) || defined (USART2) || defined (USART3) || defined (USART6) || defined (UART4) || defined (UART5) || defined (UART7) || defined (UART8) || defined (UART9) || defined (UART10)
49#define USART_POSITION_GTPR_GT USART_GTPR_GT_Pos
55#if defined(USE_FULL_LL_DRIVER)
65#if defined(USE_FULL_LL_DRIVER)
94 uint32_t TransferDirection;
99 uint32_t HardwareFlowControl;
104 uint32_t OverSampling;
109} LL_USART_InitTypeDef;
116 uint32_t ClockOutput;
123 uint32_t ClockPolarity;
135 uint32_t LastBitClockPulse;
142} LL_USART_ClockInitTypeDef;
158#define LL_USART_SR_PE USART_SR_PE
159#define LL_USART_SR_FE USART_SR_FE
160#define LL_USART_SR_NE USART_SR_NE
161#define LL_USART_SR_ORE USART_SR_ORE
162#define LL_USART_SR_IDLE USART_SR_IDLE
163#define LL_USART_SR_RXNE USART_SR_RXNE
164#define LL_USART_SR_TC USART_SR_TC
165#define LL_USART_SR_TXE USART_SR_TXE
166#define LL_USART_SR_LBD USART_SR_LBD
167#define LL_USART_SR_CTS USART_SR_CTS
176#define LL_USART_CR1_IDLEIE USART_CR1_IDLEIE
177#define LL_USART_CR1_RXNEIE USART_CR1_RXNEIE
178#define LL_USART_CR1_TCIE USART_CR1_TCIE
179#define LL_USART_CR1_TXEIE USART_CR1_TXEIE
180#define LL_USART_CR1_PEIE USART_CR1_PEIE
181#define LL_USART_CR2_LBDIE USART_CR2_LBDIE
182#define LL_USART_CR3_EIE USART_CR3_EIE
183#define LL_USART_CR3_CTSIE USART_CR3_CTSIE
191#define LL_USART_DIRECTION_NONE 0x00000000U
192#define LL_USART_DIRECTION_RX USART_CR1_RE
193#define LL_USART_DIRECTION_TX USART_CR1_TE
194#define LL_USART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE)
202#define LL_USART_PARITY_NONE 0x00000000U
203#define LL_USART_PARITY_EVEN USART_CR1_PCE
204#define LL_USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS)
212#define LL_USART_WAKEUP_IDLELINE 0x00000000U
213#define LL_USART_WAKEUP_ADDRESSMARK USART_CR1_WAKE
221#define LL_USART_DATAWIDTH_8B 0x00000000U
222#define LL_USART_DATAWIDTH_9B USART_CR1_M
230#define LL_USART_OVERSAMPLING_16 0x00000000U
231#define LL_USART_OVERSAMPLING_8 USART_CR1_OVER8
236#if defined(USE_FULL_LL_DRIVER)
241#define LL_USART_CLOCK_DISABLE 0x00000000U
242#define LL_USART_CLOCK_ENABLE USART_CR2_CLKEN
251#define LL_USART_LASTCLKPULSE_NO_OUTPUT 0x00000000U
252#define LL_USART_LASTCLKPULSE_OUTPUT USART_CR2_LBCL
260#define LL_USART_PHASE_1EDGE 0x00000000U
261#define LL_USART_PHASE_2EDGE USART_CR2_CPHA
269#define LL_USART_POLARITY_LOW 0x00000000U
270#define LL_USART_POLARITY_HIGH USART_CR2_CPOL
278#define LL_USART_STOPBITS_0_5 USART_CR2_STOP_0
279#define LL_USART_STOPBITS_1 0x00000000U
280#define LL_USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1)
281#define LL_USART_STOPBITS_2 USART_CR2_STOP_1
289#define LL_USART_HWCONTROL_NONE 0x00000000U
290#define LL_USART_HWCONTROL_RTS USART_CR3_RTSE
291#define LL_USART_HWCONTROL_CTS USART_CR3_CTSE
292#define LL_USART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE)
300#define LL_USART_IRDA_POWER_NORMAL 0x00000000U
301#define LL_USART_IRDA_POWER_LOW USART_CR3_IRLP
309#define LL_USART_LINBREAK_DETECT_10B 0x00000000U
310#define LL_USART_LINBREAK_DETECT_11B USART_CR2_LBDL
335#define LL_USART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
343#define LL_USART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
359#define __LL_USART_DIV_SAMPLING8_100(__PERIPHCLK__, __BAUDRATE__) ((uint32_t)((((uint64_t)(__PERIPHCLK__))*25)/(2*((uint64_t)(__BAUDRATE__)))))
360#define __LL_USART_DIVMANT_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) (__LL_USART_DIV_SAMPLING8_100((__PERIPHCLK__), (__BAUDRATE__))/100)
361#define __LL_USART_DIVFRAQ_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__LL_USART_DIV_SAMPLING8_100((__PERIPHCLK__), (__BAUDRATE__)) - (__LL_USART_DIVMANT_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) * 100)) * 8)\
365#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIVMANT_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) << 4) + \
366 ((__LL_USART_DIVFRAQ_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) & 0xF8) << 1)) + \
367 (__LL_USART_DIVFRAQ_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) & 0x07))
376#define __LL_USART_DIV_SAMPLING16_100(__PERIPHCLK__, __BAUDRATE__) ((uint32_t)((((uint64_t)(__PERIPHCLK__))*25)/(4*((uint64_t)(__BAUDRATE__)))))
377#define __LL_USART_DIVMANT_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (__LL_USART_DIV_SAMPLING16_100((__PERIPHCLK__), (__BAUDRATE__))/100)
378#define __LL_USART_DIVFRAQ_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) ((((__LL_USART_DIV_SAMPLING16_100((__PERIPHCLK__), (__BAUDRATE__)) - (__LL_USART_DIVMANT_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) * 100)) * 16)\
382#define __LL_USART_DIV_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIVMANT_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) << 4) + \
383 (__LL_USART_DIVFRAQ_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) & 0xF0)) + \
384 (__LL_USART_DIVFRAQ_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) & 0x0F))
410__STATIC_INLINE
void LL_USART_Enable(USART_TypeDef *USARTx)
412 SET_BIT(USARTx->CR1, USART_CR1_UE);
424__STATIC_INLINE
void LL_USART_Disable(USART_TypeDef *USARTx)
426 CLEAR_BIT(USARTx->CR1, USART_CR1_UE);
435__STATIC_INLINE uint32_t LL_USART_IsEnabled(
const USART_TypeDef *USARTx)
437 return (READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE));
446__STATIC_INLINE
void LL_USART_EnableDirectionRx(USART_TypeDef *USARTx)
448 ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RE);
457__STATIC_INLINE
void LL_USART_DisableDirectionRx(USART_TypeDef *USARTx)
459 ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RE);
468__STATIC_INLINE
void LL_USART_EnableDirectionTx(USART_TypeDef *USARTx)
470 ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TE);
479__STATIC_INLINE
void LL_USART_DisableDirectionTx(USART_TypeDef *USARTx)
481 ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TE);
497__STATIC_INLINE
void LL_USART_SetTransferDirection(USART_TypeDef *USARTx, uint32_t TransferDirection)
499 ATOMIC_MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection);
513__STATIC_INLINE uint32_t LL_USART_GetTransferDirection(
const USART_TypeDef *USARTx)
515 return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_RE | USART_CR1_TE));
532__STATIC_INLINE
void LL_USART_SetParity(USART_TypeDef *USARTx, uint32_t Parity)
534 MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE, Parity);
547__STATIC_INLINE uint32_t LL_USART_GetParity(
const USART_TypeDef *USARTx)
549 return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE));
561__STATIC_INLINE
void LL_USART_SetWakeUpMethod(USART_TypeDef *USARTx, uint32_t Method)
563 MODIFY_REG(USARTx->CR1, USART_CR1_WAKE, Method);
574__STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(
const USART_TypeDef *USARTx)
576 return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_WAKE));
588__STATIC_INLINE
void LL_USART_SetDataWidth(USART_TypeDef *USARTx, uint32_t DataWidth)
590 MODIFY_REG(USARTx->CR1, USART_CR1_M, DataWidth);
601__STATIC_INLINE uint32_t LL_USART_GetDataWidth(
const USART_TypeDef *USARTx)
603 return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_M));
615__STATIC_INLINE
void LL_USART_SetOverSampling(USART_TypeDef *USARTx, uint32_t OverSampling)
617 MODIFY_REG(USARTx->CR1, USART_CR1_OVER8, OverSampling);
628__STATIC_INLINE uint32_t LL_USART_GetOverSampling(
const USART_TypeDef *USARTx)
630 return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_OVER8));
644__STATIC_INLINE
void LL_USART_SetLastClkPulseOutput(USART_TypeDef *USARTx, uint32_t LastBitClockPulse)
646 MODIFY_REG(USARTx->CR2, USART_CR2_LBCL, LastBitClockPulse);
660__STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(
const USART_TypeDef *USARTx)
662 return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBCL));
676__STATIC_INLINE
void LL_USART_SetClockPhase(USART_TypeDef *USARTx, uint32_t ClockPhase)
678 MODIFY_REG(USARTx->CR2, USART_CR2_CPHA, ClockPhase);
691__STATIC_INLINE uint32_t LL_USART_GetClockPhase(
const USART_TypeDef *USARTx)
693 return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPHA));
707__STATIC_INLINE
void LL_USART_SetClockPolarity(USART_TypeDef *USARTx, uint32_t ClockPolarity)
709 MODIFY_REG(USARTx->CR2, USART_CR2_CPOL, ClockPolarity);
722__STATIC_INLINE uint32_t LL_USART_GetClockPolarity(
const USART_TypeDef *USARTx)
724 return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPOL));
750__STATIC_INLINE
void LL_USART_ConfigClock(USART_TypeDef *USARTx, uint32_t Phase, uint32_t Polarity, uint32_t LBCPOutput)
752 MODIFY_REG(USARTx->CR2, USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, Phase | Polarity | LBCPOutput);
763__STATIC_INLINE
void LL_USART_EnableSCLKOutput(USART_TypeDef *USARTx)
765 SET_BIT(USARTx->CR2, USART_CR2_CLKEN);
776__STATIC_INLINE
void LL_USART_DisableSCLKOutput(USART_TypeDef *USARTx)
778 CLEAR_BIT(USARTx->CR2, USART_CR2_CLKEN);
789__STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(
const USART_TypeDef *USARTx)
791 return (READ_BIT(USARTx->CR2, USART_CR2_CLKEN) == (USART_CR2_CLKEN));
805__STATIC_INLINE
void LL_USART_SetStopBitsLength(USART_TypeDef *USARTx, uint32_t StopBits)
807 MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits);
820__STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(
const USART_TypeDef *USARTx)
822 return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_STOP));
850__STATIC_INLINE
void LL_USART_ConfigCharacter(USART_TypeDef *USARTx, uint32_t DataWidth, uint32_t Parity,
853 MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE | USART_CR1_M, Parity | DataWidth);
854 MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits);
866__STATIC_INLINE
void LL_USART_SetNodeAddress(USART_TypeDef *USARTx, uint32_t NodeAddress)
868 MODIFY_REG(USARTx->CR2, USART_CR2_ADD, (NodeAddress & USART_CR2_ADD));
878__STATIC_INLINE uint32_t LL_USART_GetNodeAddress(
const USART_TypeDef *USARTx)
880 return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADD));
891__STATIC_INLINE
void LL_USART_EnableRTSHWFlowCtrl(USART_TypeDef *USARTx)
893 SET_BIT(USARTx->CR3, USART_CR3_RTSE);
904__STATIC_INLINE
void LL_USART_DisableRTSHWFlowCtrl(USART_TypeDef *USARTx)
906 CLEAR_BIT(USARTx->CR3, USART_CR3_RTSE);
917__STATIC_INLINE
void LL_USART_EnableCTSHWFlowCtrl(USART_TypeDef *USARTx)
919 SET_BIT(USARTx->CR3, USART_CR3_CTSE);
930__STATIC_INLINE
void LL_USART_DisableCTSHWFlowCtrl(USART_TypeDef *USARTx)
932 CLEAR_BIT(USARTx->CR3, USART_CR3_CTSE);
949__STATIC_INLINE
void LL_USART_SetHWFlowCtrl(USART_TypeDef *USARTx, uint32_t HardwareFlowControl)
951 MODIFY_REG(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE, HardwareFlowControl);
967__STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(
const USART_TypeDef *USARTx)
969 return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE));
978__STATIC_INLINE
void LL_USART_EnableOneBitSamp(USART_TypeDef *USARTx)
980 SET_BIT(USARTx->CR3, USART_CR3_ONEBIT);
989__STATIC_INLINE
void LL_USART_DisableOneBitSamp(USART_TypeDef *USARTx)
991 CLEAR_BIT(USARTx->CR3, USART_CR3_ONEBIT);
1000__STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(
const USART_TypeDef *USARTx)
1002 return (READ_BIT(USARTx->CR3, USART_CR3_ONEBIT) == (USART_CR3_ONEBIT));
1020__STATIC_INLINE
void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling,
1023 if (OverSampling == LL_USART_OVERSAMPLING_8)
1025 USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING8(PeriphClk, BaudRate));
1029 USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate));
1045__STATIC_INLINE uint32_t LL_USART_GetBaudRate(
const USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling)
1047 uint32_t usartdiv = 0x0U;
1048 uint32_t brrresult = 0x0U;
1050 usartdiv = USARTx->BRR;
1052 if (OverSampling == LL_USART_OVERSAMPLING_8)
1054 if ((usartdiv & 0xFFF7U) != 0U)
1056 usartdiv = (uint16_t)((usartdiv & 0xFFF0U) | ((usartdiv & 0x0007U) << 1U)) ;
1057 brrresult = (PeriphClk * 2U) / usartdiv;
1062 if ((usartdiv & 0xFFFFU) != 0U)
1064 brrresult = PeriphClk / usartdiv;
1086__STATIC_INLINE
void LL_USART_EnableIrda(USART_TypeDef *USARTx)
1088 SET_BIT(USARTx->CR3, USART_CR3_IREN);
1099__STATIC_INLINE
void LL_USART_DisableIrda(USART_TypeDef *USARTx)
1101 CLEAR_BIT(USARTx->CR3, USART_CR3_IREN);
1112__STATIC_INLINE uint32_t LL_USART_IsEnabledIrda(
const USART_TypeDef *USARTx)
1114 return (READ_BIT(USARTx->CR3, USART_CR3_IREN) == (USART_CR3_IREN));
1128__STATIC_INLINE
void LL_USART_SetIrdaPowerMode(USART_TypeDef *USARTx, uint32_t PowerMode)
1130 MODIFY_REG(USARTx->CR3, USART_CR3_IRLP, PowerMode);
1143__STATIC_INLINE uint32_t LL_USART_GetIrdaPowerMode(
const USART_TypeDef *USARTx)
1145 return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_IRLP));
1158__STATIC_INLINE
void LL_USART_SetIrdaPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue)
1160 MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, PrescalerValue);
1172__STATIC_INLINE uint32_t LL_USART_GetIrdaPrescaler(
const USART_TypeDef *USARTx)
1174 return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC));
1193__STATIC_INLINE
void LL_USART_EnableSmartcardNACK(USART_TypeDef *USARTx)
1195 SET_BIT(USARTx->CR3, USART_CR3_NACK);
1206__STATIC_INLINE
void LL_USART_DisableSmartcardNACK(USART_TypeDef *USARTx)
1208 CLEAR_BIT(USARTx->CR3, USART_CR3_NACK);
1219__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcardNACK(
const USART_TypeDef *USARTx)
1221 return (READ_BIT(USARTx->CR3, USART_CR3_NACK) == (USART_CR3_NACK));
1232__STATIC_INLINE
void LL_USART_EnableSmartcard(USART_TypeDef *USARTx)
1234 SET_BIT(USARTx->CR3, USART_CR3_SCEN);
1245__STATIC_INLINE
void LL_USART_DisableSmartcard(USART_TypeDef *USARTx)
1247 CLEAR_BIT(USARTx->CR3, USART_CR3_SCEN);
1258__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcard(
const USART_TypeDef *USARTx)
1260 return (READ_BIT(USARTx->CR3, USART_CR3_SCEN) == (USART_CR3_SCEN));
1273__STATIC_INLINE
void LL_USART_SetSmartcardPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue)
1275 MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, PrescalerValue);
1287__STATIC_INLINE uint32_t LL_USART_GetSmartcardPrescaler(
const USART_TypeDef *USARTx)
1289 return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC));
1302__STATIC_INLINE
void LL_USART_SetSmartcardGuardTime(USART_TypeDef *USARTx, uint32_t GuardTime)
1304 MODIFY_REG(USARTx->GTPR, USART_GTPR_GT, GuardTime << USART_POSITION_GTPR_GT);
1316__STATIC_INLINE uint32_t LL_USART_GetSmartcardGuardTime(
const USART_TypeDef *USARTx)
1318 return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_GT) >> USART_POSITION_GTPR_GT);
1337__STATIC_INLINE
void LL_USART_EnableHalfDuplex(USART_TypeDef *USARTx)
1339 SET_BIT(USARTx->CR3, USART_CR3_HDSEL);
1350__STATIC_INLINE
void LL_USART_DisableHalfDuplex(USART_TypeDef *USARTx)
1352 CLEAR_BIT(USARTx->CR3, USART_CR3_HDSEL);
1363__STATIC_INLINE uint32_t LL_USART_IsEnabledHalfDuplex(
const USART_TypeDef *USARTx)
1365 return (READ_BIT(USARTx->CR3, USART_CR3_HDSEL) == (USART_CR3_HDSEL));
1387__STATIC_INLINE
void LL_USART_SetLINBrkDetectionLen(USART_TypeDef *USARTx, uint32_t LINBDLength)
1389 MODIFY_REG(USARTx->CR2, USART_CR2_LBDL, LINBDLength);
1402__STATIC_INLINE uint32_t LL_USART_GetLINBrkDetectionLen(
const USART_TypeDef *USARTx)
1404 return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBDL));
1415__STATIC_INLINE
void LL_USART_EnableLIN(USART_TypeDef *USARTx)
1417 SET_BIT(USARTx->CR2, USART_CR2_LINEN);
1428__STATIC_INLINE
void LL_USART_DisableLIN(USART_TypeDef *USARTx)
1430 CLEAR_BIT(USARTx->CR2, USART_CR2_LINEN);
1441__STATIC_INLINE uint32_t LL_USART_IsEnabledLIN(
const USART_TypeDef *USARTx)
1443 return (READ_BIT(USARTx->CR2, USART_CR2_LINEN) == (USART_CR2_LINEN));
1479__STATIC_INLINE
void LL_USART_ConfigAsyncMode(USART_TypeDef *USARTx)
1484 CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
1485 CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
1515__STATIC_INLINE
void LL_USART_ConfigSyncMode(USART_TypeDef *USARTx)
1520 CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
1521 CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
1523 SET_BIT(USARTx->CR2, USART_CR2_CLKEN);
1555__STATIC_INLINE
void LL_USART_ConfigLINMode(USART_TypeDef *USARTx)
1560 CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP));
1561 CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL));
1563 SET_BIT(USARTx->CR2, USART_CR2_LINEN);
1593__STATIC_INLINE
void LL_USART_ConfigHalfDuplexMode(USART_TypeDef *USARTx)
1598 CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
1599 CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN));
1601 SET_BIT(USARTx->CR3, USART_CR3_HDSEL);
1633__STATIC_INLINE
void LL_USART_ConfigSmartcardMode(USART_TypeDef *USARTx)
1638 CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
1639 CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL));
1642 SET_BIT(USARTx->CR2, (USART_CR2_STOP_0 | USART_CR2_STOP_1 | USART_CR2_CLKEN));
1644 SET_BIT(USARTx->CR3, USART_CR3_SCEN);
1676__STATIC_INLINE
void LL_USART_ConfigIrdaMode(USART_TypeDef *USARTx)
1681 CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP));
1682 CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL));
1684 SET_BIT(USARTx->CR3, USART_CR3_IREN);
1714__STATIC_INLINE
void LL_USART_ConfigMultiProcessMode(USART_TypeDef *USARTx)
1719 CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
1720 CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
1737__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_PE(
const USART_TypeDef *USARTx)
1739 return (READ_BIT(USARTx->SR, USART_SR_PE) == (USART_SR_PE));
1748__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_FE(
const USART_TypeDef *USARTx)
1750 return (READ_BIT(USARTx->SR, USART_SR_FE) == (USART_SR_FE));
1759__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_NE(
const USART_TypeDef *USARTx)
1761 return (READ_BIT(USARTx->SR, USART_SR_NE) == (USART_SR_NE));
1770__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ORE(
const USART_TypeDef *USARTx)
1772 return (READ_BIT(USARTx->SR, USART_SR_ORE) == (USART_SR_ORE));
1781__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_IDLE(
const USART_TypeDef *USARTx)
1783 return (READ_BIT(USARTx->SR, USART_SR_IDLE) == (USART_SR_IDLE));
1792__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE(
const USART_TypeDef *USARTx)
1794 return (READ_BIT(USARTx->SR, USART_SR_RXNE) == (USART_SR_RXNE));
1803__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TC(
const USART_TypeDef *USARTx)
1805 return (READ_BIT(USARTx->SR, USART_SR_TC) == (USART_SR_TC));
1814__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TXE(
const USART_TypeDef *USARTx)
1816 return (READ_BIT(USARTx->SR, USART_SR_TXE) == (USART_SR_TXE));
1827__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_LBD(
const USART_TypeDef *USARTx)
1829 return (READ_BIT(USARTx->SR, USART_SR_LBD) == (USART_SR_LBD));
1840__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_nCTS(
const USART_TypeDef *USARTx)
1842 return (READ_BIT(USARTx->SR, USART_SR_CTS) == (USART_SR_CTS));
1851__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_SBK(
const USART_TypeDef *USARTx)
1853 return (READ_BIT(USARTx->CR1, USART_CR1_SBK) == (USART_CR1_SBK));
1862__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(
const USART_TypeDef *USARTx)
1864 return (READ_BIT(USARTx->CR1, USART_CR1_RWU) == (USART_CR1_RWU));
1877__STATIC_INLINE
void LL_USART_ClearFlag_PE(USART_TypeDef *USARTx)
1879 __IO uint32_t tmpreg;
1880 tmpreg = USARTx->SR;
1882 tmpreg = USARTx->DR;
1896__STATIC_INLINE
void LL_USART_ClearFlag_FE(USART_TypeDef *USARTx)
1898 __IO uint32_t tmpreg;
1899 tmpreg = USARTx->SR;
1901 tmpreg = USARTx->DR;
1915__STATIC_INLINE
void LL_USART_ClearFlag_NE(USART_TypeDef *USARTx)
1917 __IO uint32_t tmpreg;
1918 tmpreg = USARTx->SR;
1920 tmpreg = USARTx->DR;
1934__STATIC_INLINE
void LL_USART_ClearFlag_ORE(USART_TypeDef *USARTx)
1936 __IO uint32_t tmpreg;
1937 tmpreg = USARTx->SR;
1939 tmpreg = USARTx->DR;
1953__STATIC_INLINE
void LL_USART_ClearFlag_IDLE(USART_TypeDef *USARTx)
1955 __IO uint32_t tmpreg;
1956 tmpreg = USARTx->SR;
1958 tmpreg = USARTx->DR;
1968__STATIC_INLINE
void LL_USART_ClearFlag_TC(USART_TypeDef *USARTx)
1970 WRITE_REG(USARTx->SR, ~(USART_SR_TC));
1979__STATIC_INLINE
void LL_USART_ClearFlag_RXNE(USART_TypeDef *USARTx)
1981 WRITE_REG(USARTx->SR, ~(USART_SR_RXNE));
1992__STATIC_INLINE
void LL_USART_ClearFlag_LBD(USART_TypeDef *USARTx)
1994 WRITE_REG(USARTx->SR, ~(USART_SR_LBD));
2005__STATIC_INLINE
void LL_USART_ClearFlag_nCTS(USART_TypeDef *USARTx)
2007 WRITE_REG(USARTx->SR, ~(USART_SR_CTS));
2024__STATIC_INLINE
void LL_USART_EnableIT_IDLE(USART_TypeDef *USARTx)
2026 ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_IDLEIE);
2035__STATIC_INLINE
void LL_USART_EnableIT_RXNE(USART_TypeDef *USARTx)
2037 ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RXNEIE);
2046__STATIC_INLINE
void LL_USART_EnableIT_TC(USART_TypeDef *USARTx)
2048 ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TCIE);
2057__STATIC_INLINE
void LL_USART_EnableIT_TXE(USART_TypeDef *USARTx)
2059 ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TXEIE);
2068__STATIC_INLINE
void LL_USART_EnableIT_PE(USART_TypeDef *USARTx)
2070 ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_PEIE);
2081__STATIC_INLINE
void LL_USART_EnableIT_LBD(USART_TypeDef *USARTx)
2083 SET_BIT(USARTx->CR2, USART_CR2_LBDIE);
2096__STATIC_INLINE
void LL_USART_EnableIT_ERROR(USART_TypeDef *USARTx)
2098 ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_EIE);
2109__STATIC_INLINE
void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx)
2111 ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_CTSIE);
2120__STATIC_INLINE
void LL_USART_DisableIT_IDLE(USART_TypeDef *USARTx)
2122 ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_IDLEIE);
2131__STATIC_INLINE
void LL_USART_DisableIT_RXNE(USART_TypeDef *USARTx)
2133 ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RXNEIE);
2142__STATIC_INLINE
void LL_USART_DisableIT_TC(USART_TypeDef *USARTx)
2144 ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TCIE);
2153__STATIC_INLINE
void LL_USART_DisableIT_TXE(USART_TypeDef *USARTx)
2155 ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TXEIE);
2164__STATIC_INLINE
void LL_USART_DisableIT_PE(USART_TypeDef *USARTx)
2166 ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_PEIE);
2177__STATIC_INLINE
void LL_USART_DisableIT_LBD(USART_TypeDef *USARTx)
2179 CLEAR_BIT(USARTx->CR2, USART_CR2_LBDIE);
2192__STATIC_INLINE
void LL_USART_DisableIT_ERROR(USART_TypeDef *USARTx)
2194 ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_EIE);
2205__STATIC_INLINE
void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx)
2207 ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE);
2216__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_IDLE(
const USART_TypeDef *USARTx)
2218 return (READ_BIT(USARTx->CR1, USART_CR1_IDLEIE) == (USART_CR1_IDLEIE));
2227__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RXNE(
const USART_TypeDef *USARTx)
2229 return (READ_BIT(USARTx->CR1, USART_CR1_RXNEIE) == (USART_CR1_RXNEIE));
2238__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(
const USART_TypeDef *USARTx)
2240 return (READ_BIT(USARTx->CR1, USART_CR1_TCIE) == (USART_CR1_TCIE));
2249__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TXE(
const USART_TypeDef *USARTx)
2251 return (READ_BIT(USARTx->CR1, USART_CR1_TXEIE) == (USART_CR1_TXEIE));
2260__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_PE(
const USART_TypeDef *USARTx)
2262 return (READ_BIT(USARTx->CR1, USART_CR1_PEIE) == (USART_CR1_PEIE));
2273__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_LBD(
const USART_TypeDef *USARTx)
2275 return (READ_BIT(USARTx->CR2, USART_CR2_LBDIE) == (USART_CR2_LBDIE));
2284__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_ERROR(
const USART_TypeDef *USARTx)
2286 return (READ_BIT(USARTx->CR3, USART_CR3_EIE) == (USART_CR3_EIE));
2297__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(
const USART_TypeDef *USARTx)
2299 return (READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE));
2316__STATIC_INLINE
void LL_USART_EnableDMAReq_RX(USART_TypeDef *USARTx)
2318 ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAR);
2327__STATIC_INLINE
void LL_USART_DisableDMAReq_RX(USART_TypeDef *USARTx)
2329 ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAR);
2338__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_RX(
const USART_TypeDef *USARTx)
2340 return (READ_BIT(USARTx->CR3, USART_CR3_DMAR) == (USART_CR3_DMAR));
2349__STATIC_INLINE
void LL_USART_EnableDMAReq_TX(USART_TypeDef *USARTx)
2351 ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAT);
2360__STATIC_INLINE
void LL_USART_DisableDMAReq_TX(USART_TypeDef *USARTx)
2362 ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAT);
2371__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_TX(
const USART_TypeDef *USARTx)
2373 return (READ_BIT(USARTx->CR3, USART_CR3_DMAT) == (USART_CR3_DMAT));
2383__STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(
const USART_TypeDef *USARTx)
2386 return ((uint32_t) &(USARTx->DR));
2403__STATIC_INLINE uint8_t LL_USART_ReceiveData8(
const USART_TypeDef *USARTx)
2405 return (uint8_t)(READ_BIT(USARTx->DR, USART_DR_DR));
2414__STATIC_INLINE uint16_t LL_USART_ReceiveData9(
const USART_TypeDef *USARTx)
2416 return (uint16_t)(READ_BIT(USARTx->DR, USART_DR_DR));
2426__STATIC_INLINE
void LL_USART_TransmitData8(USART_TypeDef *USARTx, uint8_t Value)
2438__STATIC_INLINE
void LL_USART_TransmitData9(USART_TypeDef *USARTx, uint16_t Value)
2440 USARTx->DR = Value & 0x1FFU;
2457__STATIC_INLINE
void LL_USART_RequestBreakSending(USART_TypeDef *USARTx)
2459 SET_BIT(USARTx->CR1, USART_CR1_SBK);
2468__STATIC_INLINE
void LL_USART_RequestEnterMuteMode(USART_TypeDef *USARTx)
2470 SET_BIT(USARTx->CR1, USART_CR1_RWU);
2479__STATIC_INLINE
void LL_USART_RequestExitMuteMode(USART_TypeDef *USARTx)
2481 CLEAR_BIT(USARTx->CR1, USART_CR1_RWU);
2488#if defined(USE_FULL_LL_DRIVER)
2492ErrorStatus LL_USART_DeInit(
const USART_TypeDef *USARTx);
2493ErrorStatus LL_USART_Init(USART_TypeDef *USARTx,
const LL_USART_InitTypeDef *USART_InitStruct);
2494void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct);
2495ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx,
const LL_USART_ClockInitTypeDef *USART_ClockInitStruct);
2496void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct);