20#ifndef STM32F3xx_LL_USART_H
21#define STM32F3xx_LL_USART_H
34#if defined(USART1) || defined(USART2) || defined(USART3) || defined(UART4) || defined(UART5)
51#if defined(USE_FULL_LL_DRIVER)
61#if defined(USE_FULL_LL_DRIVER)
95 uint32_t TransferDirection;
101 uint32_t HardwareFlowControl;
107 uint32_t OverSampling;
113} LL_USART_InitTypeDef;
120 uint32_t ClockOutput;
127 uint32_t ClockPolarity;
141 uint32_t LastBitClockPulse;
149} LL_USART_ClockInitTypeDef;
165#define LL_USART_ICR_PECF USART_ICR_PECF
166#define LL_USART_ICR_FECF USART_ICR_FECF
167#define LL_USART_ICR_NCF USART_ICR_NCF
168#define LL_USART_ICR_ORECF USART_ICR_ORECF
169#define LL_USART_ICR_IDLECF USART_ICR_IDLECF
170#define LL_USART_ICR_TCCF USART_ICR_TCCF
171#define LL_USART_ICR_LBDCF USART_ICR_LBDCF
172#define LL_USART_ICR_CTSCF USART_ICR_CTSCF
173#define LL_USART_ICR_RTOCF USART_ICR_RTOCF
174#define LL_USART_ICR_EOBCF USART_ICR_EOBCF
175#define LL_USART_ICR_CMCF USART_ICR_CMCF
176#define LL_USART_ICR_WUCF USART_ICR_WUCF
185#define LL_USART_ISR_PE USART_ISR_PE
186#define LL_USART_ISR_FE USART_ISR_FE
187#define LL_USART_ISR_NE USART_ISR_NE
188#define LL_USART_ISR_ORE USART_ISR_ORE
189#define LL_USART_ISR_IDLE USART_ISR_IDLE
190#define LL_USART_ISR_RXNE USART_ISR_RXNE
191#define LL_USART_ISR_TC USART_ISR_TC
192#define LL_USART_ISR_TXE USART_ISR_TXE
193#define LL_USART_ISR_LBDF USART_ISR_LBDF
194#define LL_USART_ISR_CTSIF USART_ISR_CTSIF
195#define LL_USART_ISR_CTS USART_ISR_CTS
196#define LL_USART_ISR_RTOF USART_ISR_RTOF
197#define LL_USART_ISR_EOBF USART_ISR_EOBF
198#define LL_USART_ISR_ABRE USART_ISR_ABRE
199#define LL_USART_ISR_ABRF USART_ISR_ABRF
200#define LL_USART_ISR_BUSY USART_ISR_BUSY
201#define LL_USART_ISR_CMF USART_ISR_CMF
202#define LL_USART_ISR_SBKF USART_ISR_SBKF
203#define LL_USART_ISR_RWU USART_ISR_RWU
204#define LL_USART_ISR_WUF USART_ISR_WUF
205#define LL_USART_ISR_TEACK USART_ISR_TEACK
206#define LL_USART_ISR_REACK USART_ISR_REACK
215#define LL_USART_CR1_IDLEIE USART_CR1_IDLEIE
216#define LL_USART_CR1_RXNEIE USART_CR1_RXNEIE
217#define LL_USART_CR1_TCIE USART_CR1_TCIE
218#define LL_USART_CR1_TXEIE USART_CR1_TXEIE
219#define LL_USART_CR1_PEIE USART_CR1_PEIE
220#define LL_USART_CR1_CMIE USART_CR1_CMIE
221#define LL_USART_CR1_RTOIE USART_CR1_RTOIE
222#define LL_USART_CR1_EOBIE USART_CR1_EOBIE
223#define LL_USART_CR2_LBDIE USART_CR2_LBDIE
224#define LL_USART_CR3_EIE USART_CR3_EIE
225#define LL_USART_CR3_CTSIE USART_CR3_CTSIE
226#define LL_USART_CR3_WUFIE USART_CR3_WUFIE
234#define LL_USART_DIRECTION_NONE 0x00000000U
235#define LL_USART_DIRECTION_RX USART_CR1_RE
236#define LL_USART_DIRECTION_TX USART_CR1_TE
237#define LL_USART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE)
245#define LL_USART_PARITY_NONE 0x00000000U
246#define LL_USART_PARITY_EVEN USART_CR1_PCE
247#define LL_USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS)
255#define LL_USART_WAKEUP_IDLELINE 0x00000000U
256#define LL_USART_WAKEUP_ADDRESSMARK USART_CR1_WAKE
264#if defined(USART_7BITS_SUPPORT)
265#define LL_USART_DATAWIDTH_7B USART_CR1_M1
266#define LL_USART_DATAWIDTH_8B 0x00000000U
267#define LL_USART_DATAWIDTH_9B USART_CR1_M0
269#define LL_USART_DATAWIDTH_8B 0x00000000U
270#define LL_USART_DATAWIDTH_9B USART_CR1_M
279#define LL_USART_OVERSAMPLING_16 0x00000000U
280#define LL_USART_OVERSAMPLING_8 USART_CR1_OVER8
285#if defined(USE_FULL_LL_DRIVER)
290#define LL_USART_CLOCK_DISABLE 0x00000000U
291#define LL_USART_CLOCK_ENABLE USART_CR2_CLKEN
300#define LL_USART_LASTCLKPULSE_NO_OUTPUT 0x00000000U
301#define LL_USART_LASTCLKPULSE_OUTPUT USART_CR2_LBCL
309#define LL_USART_PHASE_1EDGE 0x00000000U
310#define LL_USART_PHASE_2EDGE USART_CR2_CPHA
318#define LL_USART_POLARITY_LOW 0x00000000U
319#define LL_USART_POLARITY_HIGH USART_CR2_CPOL
327#define LL_USART_STOPBITS_0_5 USART_CR2_STOP_0
328#define LL_USART_STOPBITS_1 0x00000000U
329#define LL_USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1)
330#define LL_USART_STOPBITS_2 USART_CR2_STOP_1
338#define LL_USART_TXRX_STANDARD 0x00000000U
339#define LL_USART_TXRX_SWAPPED (USART_CR2_SWAP)
347#define LL_USART_RXPIN_LEVEL_STANDARD 0x00000000U
348#define LL_USART_RXPIN_LEVEL_INVERTED (USART_CR2_RXINV)
356#define LL_USART_TXPIN_LEVEL_STANDARD 0x00000000U
357#define LL_USART_TXPIN_LEVEL_INVERTED (USART_CR2_TXINV)
365#define LL_USART_BINARY_LOGIC_POSITIVE 0x00000000U
366#define LL_USART_BINARY_LOGIC_NEGATIVE USART_CR2_DATAINV
374#define LL_USART_BITORDER_LSBFIRST 0x00000000U
375#define LL_USART_BITORDER_MSBFIRST USART_CR2_MSBFIRST
383#define LL_USART_AUTOBAUD_DETECT_ON_STARTBIT 0x00000000U
384#define LL_USART_AUTOBAUD_DETECT_ON_FALLINGEDGE USART_CR2_ABRMODE_0
385#define LL_USART_AUTOBAUD_DETECT_ON_7F_FRAME USART_CR2_ABRMODE_1
386#define LL_USART_AUTOBAUD_DETECT_ON_55_FRAME (USART_CR2_ABRMODE_1 | USART_CR2_ABRMODE_0)
394#define LL_USART_ADDRESS_DETECT_4B 0x00000000U
395#define LL_USART_ADDRESS_DETECT_7B USART_CR2_ADDM7
403#define LL_USART_HWCONTROL_NONE 0x00000000U
404#define LL_USART_HWCONTROL_RTS USART_CR3_RTSE
405#define LL_USART_HWCONTROL_CTS USART_CR3_CTSE
406#define LL_USART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE)
414#define LL_USART_WAKEUP_ON_ADDRESS 0x00000000U
415#define LL_USART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1
416#define LL_USART_WAKEUP_ON_RXNE (USART_CR3_WUS_0 | USART_CR3_WUS_1)
424#define LL_USART_IRDA_POWER_NORMAL 0x00000000U
425#define LL_USART_IRDA_POWER_LOW USART_CR3_IRLP
433#define LL_USART_LINBREAK_DETECT_10B 0x00000000U
434#define LL_USART_LINBREAK_DETECT_11B USART_CR2_LBDL
442#define LL_USART_DE_POLARITY_HIGH 0x00000000U
443#define LL_USART_DE_POLARITY_LOW USART_CR3_DEP
451#define LL_USART_DMA_REG_DATA_TRANSMIT 0x00000000U
452#define LL_USART_DMA_REG_DATA_RECEIVE 0x00000001U
477#define LL_USART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
485#define LL_USART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
501#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U)\
502 + ((__BAUDRATE__)/2U))/(__BAUDRATE__))
511#define __LL_USART_DIV_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__) + ((__BAUDRATE__)/2U))/(__BAUDRATE__))
1586 if (OverSampling == LL_USART_OVERSAMPLING_8)
1588 usartdiv = (uint16_t)(__LL_USART_DIV_SAMPLING8(PeriphClk, BaudRate));
1589 brrtemp = usartdiv & 0xFFF0U;
1590 brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);
1591 USARTx->
BRR = brrtemp;
1595 USARTx->
BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate));
1615 uint32_t brrresult = 0x0U;
1617 usartdiv = USARTx->
BRR;
1623 else if (OverSampling == LL_USART_OVERSAMPLING_8)
1625 usartdiv = (uint16_t)((usartdiv & 0xFFF0U) | ((usartdiv & 0x0007U) << 1U)) ;
1628 brrresult = (PeriphClk * 2U) / usartdiv;
1633 if ((usartdiv & 0xFFFFU) != 0U)
1635 brrresult = PeriphClk / usartdiv;
3474 uint32_t data_reg_addr;
3476 if (Direction == LL_USART_DMA_REG_DATA_TRANSMIT)
3479 data_reg_addr = (uint32_t) &(USARTx->
TDR);
3484 data_reg_addr = (uint32_t) &(USARTx->
RDR);
3487 return data_reg_addr;
3529 USARTx->
TDR = Value;
3541 USARTx->
TDR = (uint16_t)(Value & 0x1FFUL);
3617#if defined(USE_FULL_LL_DRIVER)
3623void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct);
3625void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct);
#define __STATIC_INLINE
Definition: cmsis_armcc.h:59
#define ATOMIC_CLEAR_BIT(REG, BIT)
Definition: stm32f3xx.h:217
#define CLEAR_BIT(REG, BIT)
Definition: stm32f3xx.h:192
#define SET_BIT(REG, BIT)
Definition: stm32f3xx.h:190
#define WRITE_REG(REG, VAL)
Definition: stm32f3xx.h:198
#define ATOMIC_SET_BIT(REG, BIT)
Definition: stm32f3xx.h:208
#define MODIFY_REG(REG, CLEARMASK, SETMASK)
Definition: stm32f3xx.h:202
#define READ_BIT(REG, BIT)
Definition: stm32f3xx.h:194
#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK)
Definition: stm32f3xx.h:226
ErrorStatus
Definition: stm32f3xx.h:177
#define USART_ICR_WUCF
Definition: stm32f303xe.h:14462
#define USART_ISR_NE
Definition: stm32f303xe.h:14367
#define USART_ISR_RTOF
Definition: stm32f303xe.h:14394
#define USART_ISR_RWU
Definition: stm32f303xe.h:14415
#define USART_RTOR_BLEN
Definition: stm32f303xe.h:14339
#define USART_CR1_UESM
Definition: stm32f303xe.h:14120
#define USART_CR3_DEP
Definition: stm32f303xe.h:14300
#define USART_GTPR_GT_Pos
Definition: stm32f303xe.h:14328
#define USART_CR3_IRLP
Definition: stm32f303xe.h:14261
#define USART_CR1_PEIE
Definition: stm32f303xe.h:14141
#define USART_ISR_FE
Definition: stm32f303xe.h:14364
#define USART_RQR_MMRQ
Definition: stm32f303xe.h:14350
#define USART_CR2_STOP_1
Definition: stm32f303xe.h:14218
#define USART_CR1_UE
Definition: stm32f303xe.h:14117
#define USART_CR2_ADD_Pos
Definition: stm32f303xe.h:14248
#define USART_RQR_SBKRQ
Definition: stm32f303xe.h:14347
#define USART_CR2_ADDM7
Definition: stm32f303xe.h:14195
#define USART_CR1_PS
Definition: stm32f303xe.h:14144
#define USART_CR3_IREN
Definition: stm32f303xe.h:14258
#define USART_ISR_EOBF
Definition: stm32f303xe.h:14397
#define USART_CR3_OVRDIS
Definition: stm32f303xe.h:14291
#define USART_CR2_CPHA
Definition: stm32f303xe.h:14207
#define USART_ICR_ORECF
Definition: stm32f303xe.h:14438
#define USART_ISR_RXNE
Definition: stm32f303xe.h:14376
#define USART_ICR_RTOCF
Definition: stm32f303xe.h:14453
#define USART_CR2_ADD
Definition: stm32f303xe.h:14250
#define USART_CR3_NACK
Definition: stm32f303xe.h:14267
#define USART_CR3_SCARCNT_Pos
Definition: stm32f303xe.h:14301
#define USART_ICR_PECF
Definition: stm32f303xe.h:14429
#define USART_CR2_CLKEN
Definition: stm32f303xe.h:14213
#define USART_ICR_EOBCF
Definition: stm32f303xe.h:14456
#define USART_CR2_LBCL
Definition: stm32f303xe.h:14204
#define USART_CR1_MME
Definition: stm32f303xe.h:14156
#define USART_CR2_SWAP
Definition: stm32f303xe.h:14224
#define USART_CR1_IDLEIE
Definition: stm32f303xe.h:14129
#define USART_ICR_CMCF
Definition: stm32f303xe.h:14459
#define USART_CR3_DMAT
Definition: stm32f303xe.h:14276
#define USART_RTOR_RTO
Definition: stm32f303xe.h:14336
#define USART_CR1_PCE
Definition: stm32f303xe.h:14147
#define USART_CR3_CTSIE
Definition: stm32f303xe.h:14285
#define USART_CR1_DEAT
Definition: stm32f303xe.h:14173
#define USART_CR1_TXEIE
Definition: stm32f303xe.h:14138
#define USART_CR2_MSBFIRST
Definition: stm32f303xe.h:14236
#define USART_ISR_SBKF
Definition: stm32f303xe.h:14412
#define USART_CR1_DEAT_Pos
Definition: stm32f303xe.h:14171
#define USART_CR3_WUS
Definition: stm32f303xe.h:14309
#define USART_CR2_ABRMODE
Definition: stm32f303xe.h:14242
#define USART_RQR_RXFRQ
Definition: stm32f303xe.h:14353
#define USART_CR3_RTSE
Definition: stm32f303xe.h:14279
#define USART_CR2_LBDL
Definition: stm32f303xe.h:14198
#define USART_CR3_WUFIE
Definition: stm32f303xe.h:14314
#define USART_ISR_CMF
Definition: stm32f303xe.h:14409
#define USART_ICR_FECF
Definition: stm32f303xe.h:14432
#define USART_ISR_CTS
Definition: stm32f303xe.h:14391
#define USART_ICR_CTSCF
Definition: stm32f303xe.h:14450
#define USART_GTPR_GT
Definition: stm32f303xe.h:14330
#define USART_CR2_DATAINV
Definition: stm32f303xe.h:14233
#define USART_CR1_RXNEIE
Definition: stm32f303xe.h:14132
#define USART_CR3_SCEN
Definition: stm32f303xe.h:14270
#define USART_CR1_M
Definition: stm32f303xe.h:14190
#define USART_CR3_ONEBIT
Definition: stm32f303xe.h:14288
#define USART_ICR_IDLECF
Definition: stm32f303xe.h:14441
#define USART_ISR_ORE
Definition: stm32f303xe.h:14370
#define USART_ISR_CTSIF
Definition: stm32f303xe.h:14388
#define USART_CR2_LBDIE
Definition: stm32f303xe.h:14201
#define USART_GTPR_PSC
Definition: stm32f303xe.h:14327
#define USART_ISR_PE
Definition: stm32f303xe.h:14361
#define USART_CR3_CTSE
Definition: stm32f303xe.h:14282
#define USART_CR1_TCIE
Definition: stm32f303xe.h:14135
#define USART_RQR_TXFRQ
Definition: stm32f303xe.h:14356
#define USART_ISR_TC
Definition: stm32f303xe.h:14379
#define USART_ISR_REACK
Definition: stm32f303xe.h:14424
#define USART_CR2_ABREN
Definition: stm32f303xe.h:14239
#define USART_CR1_CMIE
Definition: stm32f303xe.h:14159
#define USART_ICR_LBDCF
Definition: stm32f303xe.h:14447
#define USART_CR3_EIE
Definition: stm32f303xe.h:14255
#define USART_CR1_DEDT
Definition: stm32f303xe.h:14165
#define USART_ISR_TXE
Definition: stm32f303xe.h:14382
#define USART_CR2_RTOEN
Definition: stm32f303xe.h:14247
#define USART_CR1_RTOIE
Definition: stm32f303xe.h:14181
#define USART_CR3_SCARCNT
Definition: stm32f303xe.h:14303
#define USART_CR3_HDSEL
Definition: stm32f303xe.h:14264
#define USART_CR2_LINEN
Definition: stm32f303xe.h:14221
#define USART_CR3_DEM
Definition: stm32f303xe.h:14297
#define USART_ISR_IDLE
Definition: stm32f303xe.h:14373
#define USART_ICR_TCCF
Definition: stm32f303xe.h:14444
#define USART_RQR_ABRRQ
Definition: stm32f303xe.h:14344
#define USART_ICR_NCF
Definition: stm32f303xe.h:14435
#define USART_CR1_WAKE
Definition: stm32f303xe.h:14150
#define USART_ISR_WUF
Definition: stm32f303xe.h:14418
#define USART_CR1_RE
Definition: stm32f303xe.h:14123
#define USART_RTOR_BLEN_Pos
Definition: stm32f303xe.h:14337
#define USART_CR2_TXINV
Definition: stm32f303xe.h:14230
#define USART_CR1_TE
Definition: stm32f303xe.h:14126
#define USART_CR1_DEDT_Pos
Definition: stm32f303xe.h:14163
#define USART_CR3_DDRE
Definition: stm32f303xe.h:14294
#define USART_CR1_EOBIE
Definition: stm32f303xe.h:14184
#define USART_ISR_ABRE
Definition: stm32f303xe.h:14400
#define USART_RDR_RDR
Definition: stm32f303xe.h:14467
#define USART_CR1_OVER8
Definition: stm32f303xe.h:14162
#define USART_CR2_STOP_0
Definition: stm32f303xe.h:14217
#define USART_ISR_LBDF
Definition: stm32f303xe.h:14385
#define USART_ISR_TEACK
Definition: stm32f303xe.h:14421
#define USART_CR2_STOP
Definition: stm32f303xe.h:14216
#define USART_ISR_BUSY
Definition: stm32f303xe.h:14406
#define USART_CR2_CPOL
Definition: stm32f303xe.h:14210
#define USART_ISR_ABRF
Definition: stm32f303xe.h:14403
#define USART_CR3_DMAR
Definition: stm32f303xe.h:14273
#define USART_CR2_RXINV
Definition: stm32f303xe.h:14227
CMSIS STM32F3xx Device Peripheral Access Layer Header File.
Universal Synchronous Asynchronous Receiver Transmitter.
Definition: stm32f303xe.h:704
__IO uint16_t TDR
Definition: stm32f303xe.h:716
__IO uint32_t RTOR
Definition: stm32f303xe.h:710
__IO uint32_t CR1
Definition: stm32f303xe.h:705
__IO uint32_t BRR
Definition: stm32f303xe.h:708
__IO uint32_t ISR
Definition: stm32f303xe.h:712
__IO uint32_t CR2
Definition: stm32f303xe.h:706
__IO uint16_t RDR
Definition: stm32f303xe.h:714
__IO uint32_t ICR
Definition: stm32f303xe.h:713
__IO uint32_t RQR
Definition: stm32f303xe.h:711
__IO uint32_t GTPR
Definition: stm32f303xe.h:709
__IO uint32_t CR3
Definition: stm32f303xe.h:707