20#ifndef STM32H7xx_LL_LPUART_H
21#define STM32H7xx_LL_LPUART_H
46static const uint16_t LPUART_PRESCALER_TAB[] =
74#define LPUART_LPUARTDIV_FREQ_MUL 256U
75#define LPUART_BRR_MASK 0x000FFFFFU
76#define LPUART_BRR_MIN_VALUE 0x00000300U
83#if defined(USE_FULL_LL_DRIVER)
93#if defined(USE_FULL_LL_DRIVER)
103 uint32_t PrescalerValue;
132 uint32_t TransferDirection;
138 uint32_t HardwareFlowControl;
144} LL_LPUART_InitTypeDef;
160#define LL_LPUART_ICR_PECF USART_ICR_PECF
161#define LL_LPUART_ICR_FECF USART_ICR_FECF
162#define LL_LPUART_ICR_NCF USART_ICR_NECF
163#define LL_LPUART_ICR_ORECF USART_ICR_ORECF
164#define LL_LPUART_ICR_IDLECF USART_ICR_IDLECF
165#define LL_LPUART_ICR_TCCF USART_ICR_TCCF
166#define LL_LPUART_ICR_CTSCF USART_ICR_CTSCF
167#define LL_LPUART_ICR_CMCF USART_ICR_CMCF
168#define LL_LPUART_ICR_WUCF USART_ICR_WUCF
177#define LL_LPUART_ISR_PE USART_ISR_PE
178#define LL_LPUART_ISR_FE USART_ISR_FE
179#define LL_LPUART_ISR_NE USART_ISR_NE
180#define LL_LPUART_ISR_ORE USART_ISR_ORE
181#define LL_LPUART_ISR_IDLE USART_ISR_IDLE
182#define LL_LPUART_ISR_RXNE_RXFNE USART_ISR_RXNE_RXFNE
183#define LL_LPUART_ISR_TC USART_ISR_TC
184#define LL_LPUART_ISR_TXE_TXFNF USART_ISR_TXE_TXFNF
185#define LL_LPUART_ISR_CTSIF USART_ISR_CTSIF
186#define LL_LPUART_ISR_CTS USART_ISR_CTS
187#define LL_LPUART_ISR_BUSY USART_ISR_BUSY
188#define LL_LPUART_ISR_CMF USART_ISR_CMF
189#define LL_LPUART_ISR_SBKF USART_ISR_SBKF
190#define LL_LPUART_ISR_RWU USART_ISR_RWU
191#define LL_LPUART_ISR_WUF USART_ISR_WUF
192#define LL_LPUART_ISR_TEACK USART_ISR_TEACK
193#define LL_LPUART_ISR_REACK USART_ISR_REACK
194#define LL_LPUART_ISR_TXFE USART_ISR_TXFE
195#define LL_LPUART_ISR_RXFF USART_ISR_RXFF
196#define LL_LPUART_ISR_RXFT USART_ISR_RXFT
197#define LL_LPUART_ISR_TXFT USART_ISR_TXFT
206#define LL_LPUART_CR1_IDLEIE USART_CR1_IDLEIE
207#define LL_LPUART_CR1_RXNEIE_RXFNEIE USART_CR1_RXNEIE_RXFNEIE
209#define LL_LPUART_CR1_TCIE USART_CR1_TCIE
210#define LL_LPUART_CR1_TXEIE_TXFNFIE USART_CR1_TXEIE_TXFNFIE
212#define LL_LPUART_CR1_PEIE USART_CR1_PEIE
213#define LL_LPUART_CR1_CMIE USART_CR1_CMIE
214#define LL_LPUART_CR1_TXFEIE USART_CR1_TXFEIE
215#define LL_LPUART_CR1_RXFFIE USART_CR1_RXFFIE
216#define LL_LPUART_CR3_EIE USART_CR3_EIE
217#define LL_LPUART_CR3_CTSIE USART_CR3_CTSIE
218#define LL_LPUART_CR3_WUFIE USART_CR3_WUFIE
219#define LL_LPUART_CR3_TXFTIE USART_CR3_TXFTIE
220#define LL_LPUART_CR3_RXFTIE USART_CR3_RXFTIE
228#define LL_LPUART_FIFOTHRESHOLD_1_8 0x00000000U
229#define LL_LPUART_FIFOTHRESHOLD_1_4 0x00000001U
230#define LL_LPUART_FIFOTHRESHOLD_1_2 0x00000002U
231#define LL_LPUART_FIFOTHRESHOLD_3_4 0x00000003U
232#define LL_LPUART_FIFOTHRESHOLD_7_8 0x00000004U
233#define LL_LPUART_FIFOTHRESHOLD_8_8 0x00000005U
241#define LL_LPUART_DIRECTION_NONE 0x00000000U
242#define LL_LPUART_DIRECTION_RX USART_CR1_RE
243#define LL_LPUART_DIRECTION_TX USART_CR1_TE
244#define LL_LPUART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE)
252#define LL_LPUART_PARITY_NONE 0x00000000U
253#define LL_LPUART_PARITY_EVEN USART_CR1_PCE
254#define LL_LPUART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS)
262#define LL_LPUART_WAKEUP_IDLELINE 0x00000000U
263#define LL_LPUART_WAKEUP_ADDRESSMARK USART_CR1_WAKE
271#define LL_LPUART_DATAWIDTH_7B USART_CR1_M1
272#define LL_LPUART_DATAWIDTH_8B 0x00000000U
273#define LL_LPUART_DATAWIDTH_9B USART_CR1_M0
281#define LL_LPUART_PRESCALER_DIV1 0x00000000U
282#define LL_LPUART_PRESCALER_DIV2 (USART_PRESC_PRESCALER_0)
283#define LL_LPUART_PRESCALER_DIV4 (USART_PRESC_PRESCALER_1)
284#define LL_LPUART_PRESCALER_DIV6 (USART_PRESC_PRESCALER_1 |\
285 USART_PRESC_PRESCALER_0)
286#define LL_LPUART_PRESCALER_DIV8 (USART_PRESC_PRESCALER_2)
287#define LL_LPUART_PRESCALER_DIV10 (USART_PRESC_PRESCALER_2 |\
288 USART_PRESC_PRESCALER_0)
289#define LL_LPUART_PRESCALER_DIV12 (USART_PRESC_PRESCALER_2 |\
290 USART_PRESC_PRESCALER_1)
291#define LL_LPUART_PRESCALER_DIV16 (USART_PRESC_PRESCALER_2 |\
292 USART_PRESC_PRESCALER_1 |\
293 USART_PRESC_PRESCALER_0)
294#define LL_LPUART_PRESCALER_DIV32 (USART_PRESC_PRESCALER_3)
295#define LL_LPUART_PRESCALER_DIV64 (USART_PRESC_PRESCALER_3 |\
296 USART_PRESC_PRESCALER_0)
297#define LL_LPUART_PRESCALER_DIV128 (USART_PRESC_PRESCALER_3 |\
298 USART_PRESC_PRESCALER_1)
299#define LL_LPUART_PRESCALER_DIV256 (USART_PRESC_PRESCALER_3 |\
300 USART_PRESC_PRESCALER_1 |\
301 USART_PRESC_PRESCALER_0)
309#define LL_LPUART_STOPBITS_1 0x00000000U
310#define LL_LPUART_STOPBITS_2 USART_CR2_STOP_1
318#define LL_LPUART_TXRX_STANDARD 0x00000000U
319#define LL_LPUART_TXRX_SWAPPED (USART_CR2_SWAP)
327#define LL_LPUART_RXPIN_LEVEL_STANDARD 0x00000000U
328#define LL_LPUART_RXPIN_LEVEL_INVERTED (USART_CR2_RXINV)
336#define LL_LPUART_TXPIN_LEVEL_STANDARD 0x00000000U
337#define LL_LPUART_TXPIN_LEVEL_INVERTED (USART_CR2_TXINV)
345#define LL_LPUART_BINARY_LOGIC_POSITIVE 0x00000000U
347#define LL_LPUART_BINARY_LOGIC_NEGATIVE USART_CR2_DATAINV
357#define LL_LPUART_BITORDER_LSBFIRST 0x00000000U
359#define LL_LPUART_BITORDER_MSBFIRST USART_CR2_MSBFIRST
368#define LL_LPUART_ADDRESS_DETECT_4B 0x00000000U
369#define LL_LPUART_ADDRESS_DETECT_7B USART_CR2_ADDM7
377#define LL_LPUART_HWCONTROL_NONE 0x00000000U
378#define LL_LPUART_HWCONTROL_RTS USART_CR3_RTSE
380#define LL_LPUART_HWCONTROL_CTS USART_CR3_CTSE
382#define LL_LPUART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE)
390#define LL_LPUART_WAKEUP_ON_ADDRESS 0x00000000U
391#define LL_LPUART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1
392#define LL_LPUART_WAKEUP_ON_RXNE (USART_CR3_WUS_0 | USART_CR3_WUS_1)
400#define LL_LPUART_DE_POLARITY_HIGH 0x00000000U
401#define LL_LPUART_DE_POLARITY_LOW USART_CR3_DEP
409#define LL_LPUART_DMA_REG_DATA_TRANSMIT 0x00000000U
410#define LL_LPUART_DMA_REG_DATA_RECEIVE 0x00000001U
435#define LL_LPUART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
443#define LL_LPUART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
472#define __LL_LPUART_DIV(__PERIPHCLK__, __PRESCALER__, __BAUDRATE__) (uint32_t)\
473 ((((((uint64_t)(__PERIPHCLK__)/(uint64_t)(LPUART_PRESCALER_TAB[(uint16_t)(__PRESCALER__)]))\
474 * LPUART_LPUARTDIV_FREQ_MUL) + (uint32_t)((__BAUDRATE__)/2U))/(__BAUDRATE__)) & LPUART_BRR_MASK)
1379 LPUARTx->
BRR = __LL_LPUART_DIV(PeriphClk, PrescalerValue, BaudRate);
1406 uint32_t PrescalerValue)
1410 uint32_t periphclkpresc = (uint32_t)(PeriphClk / (LPUART_PRESCALER_TAB[(uint16_t)PrescalerValue]));
1412 lpuartdiv = LPUARTx->
BRR & LPUART_BRR_MASK;
1414 if (lpuartdiv >= LPUART_BRR_MIN_VALUE)
1416 brrresult = (uint32_t)(((uint64_t)(periphclkpresc) * LPUART_LPUARTDIV_FREQ_MUL) / lpuartdiv);
1644#define LL_LPUART_IsActiveFlag_RXNE LL_LPUART_IsActiveFlag_RXNE_RXFNE
1668#define LL_LPUART_IsActiveFlag_TXE LL_LPUART_IsActiveFlag_TXE_TXFNF
1942#define LL_LPUART_EnableIT_RXNE LL_LPUART_EnableIT_RXNE_RXFNE
1966#define LL_LPUART_EnableIT_TXE LL_LPUART_EnableIT_TXE_TXFNF
2093#define LL_LPUART_DisableIT_RXNE LL_LPUART_DisableIT_RXNE_RXFNE
2117#define LL_LPUART_DisableIT_TXE LL_LPUART_DisableIT_TXE_TXFNF
2244#define LL_LPUART_IsEnabledIT_RXNE LL_LPUART_IsEnabledIT_RXNE_RXFNE
2268#define LL_LPUART_IsEnabledIT_TXE LL_LPUART_IsEnabledIT_TXE_TXFNF
2499 uint32_t data_reg_addr;
2501 if (Direction == LL_LPUART_DMA_REG_DATA_TRANSMIT)
2504 data_reg_addr = (uint32_t) &(LPUARTx->
TDR);
2509 data_reg_addr = (uint32_t) &(LPUARTx->
RDR);
2512 return data_reg_addr;
2554 LPUARTx->
TDR = Value;
2566 LPUARTx->
TDR = Value & 0x1FFUL;
2631#if defined(USE_FULL_LL_DRIVER)
2637void LL_LPUART_StructInit(LL_LPUART_InitTypeDef *LPUART_InitStruct);
#define ATOMIC_CLEAR_BIT(REG, BIT)
#define CLEAR_BIT(REG, BIT)
#define SET_BIT(REG, BIT)
#define WRITE_REG(REG, VAL)
#define ATOMIC_SET_BIT(REG, BIT)
#define MODIFY_REG(REG, CLEARMASK, SETMASK)
#define READ_BIT(REG, BIT)
#define ATOMIC_MODIFY_REG(REG, CLEARMSK, SETMASK)
#define USART_ICR_WUCF
Wake Up from stop mode Clear Flag.
#define USART_ISR_NE
Noise detected Flag.
#define USART_ISR_RWU
Receive Wake Up from mute mode Flag.
#define USART_ISR_TXE_TXFNF
Transmit Data Register Empty or TX FIFO Not Full Flag.
#define USART_ISR_TXFT
TXFIFO threshold Flag.
#define USART_CR1_UESM
USART Enable in STOP Mode.
#define USART_CR3_DEP
Driver Enable Polarity Selection.
#define USART_PRESC_PRESCALER
PRESCALER[3:0] bits (Clock prescaler).
#define USART_CR1_PEIE
PE Interrupt Enable.
#define USART_ISR_FE
Framing Error.
#define USART_RQR_MMRQ
Mute Mode Request.
#define USART_CR1_UE
USART Enable.
#define USART_CR2_ADD_Pos
#define USART_RQR_SBKRQ
Send Break Request.
#define USART_CR2_ADDM7
7-bit or 4-bit Address Detection
#define USART_CR1_PS
Parity Selection.
#define USART_CR3_OVRDIS
Overrun Disable.
#define USART_ICR_ORECF
OverRun Error Clear Flag.
#define USART_CR2_ADD
Address of the USART node.
#define USART_CR3_TXFTCFG
TXFIFO [2:0] threshold configuration.
#define USART_ICR_PECF
Parity Error Clear Flag.
#define USART_CR3_RXFTIE
RXFIFO threshold interrupt enable.
#define USART_CR1_MME
Mute Mode Enable.
#define USART_CR2_SWAP
SWAP TX/RX pins.
#define USART_CR1_IDLEIE
IDLE Interrupt Enable.
#define USART_ICR_CMCF
Character Match Clear Flag.
#define USART_CR3_TXFTIE
TXFIFO threshold interrupt enable.
#define USART_CR3_DMAT
DMA Enable Transmitter.
#define USART_CR1_PCE
Parity Control Enable.
#define USART_CR3_CTSIE
CTS Interrupt Enable.
#define USART_CR3_RXFTCFG_Pos
#define USART_CR1_DEAT
DEAT[4:0] bits (Driver Enable Assertion Time).
#define USART_CR1_RXFFIE
RXFIFO Full interrupt enable.
#define USART_CR2_MSBFIRST
Most Significant Bit First.
#define USART_ISR_SBKF
Send Break Flag.
#define USART_CR1_DEAT_Pos
#define USART_CR3_WUS
WUS[1:0] bits (Wake UP Interrupt Flag Selection).
#define USART_RQR_RXFRQ
Receive Data flush Request.
#define USART_CR3_RTSE
RTS Enable.
#define USART_CR3_WUFIE
Wake Up Interrupt Enable.
#define USART_ISR_CMF
Character Match Flag.
#define USART_CR1_RXNEIE_RXFNEIE
RXNE and RX FIFO Not Empty Interrupt Enable.
#define USART_ICR_FECF
Framing Error Clear Flag.
#define USART_ISR_CTS
CTS flag.
#define USART_ICR_CTSCF
CTS Interrupt Clear Flag.
#define USART_CR2_DATAINV
Binary data inversion.
#define USART_CR1_TXEIE_TXFNFIE
TXE and TX FIFO Not Full Interrupt Enable.
#define USART_CR1_M
Word length.
#define USART_ICR_IDLECF
IDLE line detected Clear Flag.
#define USART_ISR_ORE
OverRun Error.
#define USART_ISR_CTSIF
CTS interrupt flag.
#define USART_ISR_PE
Parity Error.
#define USART_CR3_CTSE
CTS Enable.
#define USART_CR1_TCIE
Transmission Complete Interrupt Enable.
#define USART_RQR_TXFRQ
Transmit data flush Request.
#define USART_ISR_TC
Transmission Complete.
#define USART_ISR_REACK
Receive Enable Acknowledge Flag.
#define USART_ISR_RXFF
RXFIFO Full Flag.
#define USART_CR1_CMIE
Character match interrupt enable.
#define USART_CR3_EIE
Error Interrupt Enable.
#define USART_CR3_TXFTCFG_Pos
#define USART_CR1_DEDT
DEDT[4:0] bits (Driver Enable Deassertion Time).
#define USART_CR1_TXFEIE
TXFIFO empty interrupt enable.
#define USART_CR3_RXFTCFG
RXFTCFG [2:0]Receive FIFO threshold configuration.
#define USART_ISR_RXNE_RXFNE
Read Data Register or RX FIFO Not Empty.
#define USART_CR3_HDSEL
Half-Duplex Selection.
#define USART_ICR_NECF
Noise detected Clear Flag.
#define USART_CR3_DEM
Driver Enable Mode.
#define USART_ISR_IDLE
IDLE line detected.
#define USART_ICR_TCCF
Transmission Complete Clear Flag.
#define USART_CR1_WAKE
Receiver Wakeup method.
#define USART_ISR_WUF
Wake Up from stop mode Flag.
#define USART_CR1_RE
Receiver Enable.
#define USART_CR2_TXINV
TX pin active level inversion.
#define USART_CR1_TE
Transmitter Enable.
#define USART_CR1_DEDT_Pos
#define USART_CR3_DDRE
DMA Disable on Reception Error.
#define USART_ISR_RXFT
RXFIFO threshold Flag.
#define USART_RDR_RDR
RDR[8:0] bits (Receive Data value).
#define USART_ISR_TEACK
Transmit Enable Acknowledge Flag.
#define USART_ISR_TXFE
TXFIFO Empty.
#define USART_CR2_STOP
STOP[1:0] bits (STOP bits).
#define USART_CR1_FIFOEN
FIFO mode enable.
#define USART_ISR_BUSY
Busy Flag.
#define USART_CR3_DMAR
DMA Enable Receiver.
#define USART_CR2_RXINV
RX pin active level inversion.
CMSIS STM32H7xx Device Peripheral Access Layer Header File.
Universal Synchronous Asynchronous Receiver Transmitter.
__IO uint32_t TDR
USART Transmit Data register, Address offset: 0x28.
__IO uint32_t CR1
USART Control register 1, Address offset: 0x00.
__IO uint32_t BRR
USART Baud rate register, Address offset: 0x0C.
__IO uint32_t ISR
USART Interrupt and status register, Address offset: 0x1C.
__IO uint32_t RDR
USART Receive Data register, Address offset: 0x24.
__IO uint32_t CR2
USART Control register 2, Address offset: 0x04.
__IO uint32_t ICR
USART Interrupt flag Clear register, Address offset: 0x20.
__IO uint32_t PRESC
USART clock Prescaler register, Address offset: 0x2C.
__IO uint32_t RQR
USART Request register, Address offset: 0x18.
__IO uint32_t CR3
USART Control register 3, Address offset: 0x08.