123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873 |
- /**
- ******************************************************************************
- * @file tae32f53xx_ll_uart.h
- * @author MCD Application Team
- * @brief Header file for UART LL module.
- *
- ******************************************************************************
- * @attention
- *
- * <h2><center>© Copyright (c) 2020 Tai-Action.
- * All rights reserved.</center></h2>
- *
- * This software is licensed by Tai-Action under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at:
- * opensource.org/licenses/BSD-3-Clause
- *
- ******************************************************************************
- */
- /* Define to prevent recursive inclusion -------------------------------------*/
- #ifndef _TAE32F53XX_LL_UART_H_
- #define _TAE32F53XX_LL_UART_H_
- #ifdef __cplusplus
- extern "C" {
- #endif /* __cplusplus */
- /* Includes ------------------------------------------------------------------*/
- #include "tae32f53xx_ll_def.h"
- #ifdef LL_DMA_MODULE_ENABLED
- #include "tae32f53xx_ll_dma.h"
- #endif
- /** @addtogroup TAE32F53xx_LL_Driver
- * @{
- */
- /** @addtogroup UART_LL
- * @{
- */
- /* Exported types ------------------------------------------------------------*/
- /** @defgroup UART_LL_Exported_Types UART LL Exported Types
- * @brief UART LL Exported Types
- * @{
- */
- /**
- * @brief UART interrupt ID type definition
- */
- typedef enum {
- UART_INT_ID_MODEM_STA = 0x0, /*!< modem status */
- UART_INT_ID_NO_INT_PENDING = 0x1, /*!< no interrupt pending */
- UART_INT_ID_TX_EMPTY = 0x2, /*!< THR register empty */
- UART_INT_ID_RX_AVL = 0x4, /*!< received data available */
- UART_INT_ID_RX_LINE_STA = 0x6, /*!< receiver line status */
- UART_INT_ID_BUSY_DET = 0x7, /*!< busy detect */
- UART_INT_ID_CHAR_TIMEOUT = 0xc, /*!< character timeout */
- } UART_IntIdETypeDef;
- /**
- * @brief UART data length type definition
- */
- typedef enum {
- UART_DAT_LEN_5b = 0, /*!< Data length 5bits */
- UART_DAT_LEN_6b = 1, /*!< Data length 6bits */
- UART_DAT_LEN_7b = 2, /*!< Data length 7bits */
- UART_DAT_LEN_8b = 3, /*!< Data length 8bits */
- UART_DAT_LEN_9b = 4, /*!< Data length 9bits */
- } UART_DatLenETypeDef;
- /**
- * @brief UART stop length type definition
- */
- typedef enum {
- UART_STOP_LEN_1b, /*!< Stop length 1bit */
- UART_STOP_LEN_1b5, /*!< Stop length 1.5bit */
- UART_STOP_LEN_2b, /*!< Stop length 2bits */
- } UART_StopLenETypeDef;
- /**
- * @brief UART parity type definition
- */
- typedef enum {
- UART_PARITY_NO, /*!< Parity no */
- UART_PARITY_ODD, /*!< Parity odd */
- UART_PARITY_EVEN, /*!< Parity even */
- } UART_ParityETypeDef;
- /**
- * @brief UART tx empty trigger level type definition
- */
- typedef enum {
- UART_TX_EMPTY_TRI_LVL_EMPTY = UART_TX_FIFO_TRIG_EMPTY, /*!< tx empty trigger level empty */
- UART_TX_EMPTY_TRI_LVL_2CAHR = UART_TX_FIFO_TRIG_2CHAR, /*!< tx empty trigger level 2char */
- UART_TX_EMPTY_TRI_LVL_QUARTER = UART_TX_FIFO_TRIG_QUARTER, /*!< tx empty trigger level quarter */
- UART_TX_EMPTY_TRI_LVL_HALF = UART_TX_FIFO_TRIG_HALF, /*!< tx empty trigger level half */
- } UART_TxEmptyTriLvlETypeDef;
- /**
- * @brief UART rx available trigger level type definition
- */
- typedef enum {
- UART_RX_AVL_TRI_LVL_1CHAR = UART_RX_FIFO_TRIG_1CHAR, /*!< rx available trigger level 1char */
- UART_RX_AVL_TRI_LVL_QUARTER = UART_RX_FIFO_TRIG_QUARTER, /*!< rx available trigger level quarter */
- UART_RX_AVL_TRI_LVL_HALF = UART_RX_FIFO_TRIG_HALF, /*!< rx available trigger level half */
- UART_RX_AVL_TRI_LVL_FULL_LESS_2 = UART_RX_FIFO_TRIG_2LESS_FULL, /*!< rx available trigger level full less 2 */
- } UART_RxAvlTriLvlETypeDef;
- /**
- * @brief UART DE polarity type definition
- */
- typedef enum {
- UART_DE_POL_ACT_LOW, /*!< DE polarity active low */
- UART_DE_POL_ACT_HIGH, /*!< DE polarity active high */
- } UART_DePolETypeDef;
- /**
- * @brief UART Init Structure definition
- */
- typedef struct __UART_InitTypeDef {
- uint32_t baudrate; /*!< baudrate */
- UART_DatLenETypeDef dat_len; /*!< data length */
- UART_StopLenETypeDef stop_len; /*!< stop length */
- UART_ParityETypeDef parity; /*!< parity */
- UART_TxEmptyTriLvlETypeDef tx_tl; /*!< tx empty trigger level */
- UART_RxAvlTriLvlETypeDef rx_tl; /*!< rx available trigger level */
- bool U9BAddrMatchMode_Enable; /*!< 9_bit addr match enable */
- uint8_t U9BRxAddress; /*!< 9_bit Receive addr */
- } UART_InitTypeDef;
- /**
- * @brief UART RS485 Mode Config Structure definition
- */
- typedef struct __UART_Rs485CfgTypeDef {
- bool de_en; /*!< DE Singal Enable control */
- uint8_t de_assert_time; /*!< Driver enable assertion time */
- uint8_t de_deassert_time; /*!< Driver enable de-assertion time */
- UART_DePolETypeDef de_polarity; /*!< DE Singal Polarity */
- } UART_Rs485CfgTypeDef;
- /**
- * @brief UART DMA Status
- */
- typedef enum {
- UART_DMA_STATE_RESET = 0, /*!< DMA State Reset: not yet initialized or disabled */
- UART_DMA_STATE_READY, /*!< DMA State Ready: initialized and ready for use */
- UART_DMA_STATE_BUSY, /*!< DMA State Busy: process is ongoing */
- UART_DMA_STATE_ERROR, /*!< DMA State Error: process is Error */
- UART_DMA_STATE_FINISH, /*!< DMA State Finish: process has been finished */
- } UART_DMAStatusTypeDef;
- /**
- * @brief I2C frame definition
- */
- typedef struct __UART_FrameTypeDef {
- UART_TypeDef *Instance; /*!< UART Reg base address */
- uint8_t *buf; /*!< buffer pointer */
- uint16_t buf_len; /*!< buffer length */
- #ifdef LL_DMA_MODULE_ENABLED
- DMA_ChannelETypeDef dma_tx_ch; /*!< UART Tx DMA Channel */
- DMA_ChannelETypeDef dma_rx_ch; /*!< UART Rx DMA Channel */
- #endif
- UART_DMAStatusTypeDef TXdma_status; /*!< UART DMA status */
- UART_DMAStatusTypeDef RXdma_status; /*!< UART DMA status */
- } UART_DMAHandleTypeDef;
- /**
- * @}
- */
- /* Exported constants --------------------------------------------------------*/
- /* Exported macro ------------------------------------------------------------*/
- /** @defgroup UART_LL_Exported_Macros UART LL Exported Macros
- * @brief UART LL Exported Macros
- * @{
- */
- /**
- * @brief RX buffer 8bits read
- * @param __UART__ Specifies UART peripheral
- * @return 8bits read value
- */
- #define __LL_UART_RxBuf8bits_Read(__UART__) (READ_BIT((__UART__)->RBR, UART_RBR_LSB_8bits_Msk))
- /**
- * @brief RX buffer 9bits read
- * @param __UART__ Specifies UART peripheral
- * @return 9bits read value
- */
- #define __LL_UART_RxBuf9bits_Read(__UART__) (READ_BIT((__UART__)->RBR, UART_RBR_9bits_Msk))
- /**
- * @brief TX buffer 8bits write
- * @param __UART__ Specifies UART peripheral
- * @param val write value
- * @return None
- */
- #define __LL_UART_TxBuf8bits_Write(__UART__, val) \
- MODIFY_REG((__UART__)->THR, UART_THR_LSB_8bits_Msk, (((val) & 0xffUL) << UART_THR_LSB_8bits_Pos))
- /**
- * @brief TX buffer 9bits write
- * @param __UART__ Specifies UART peripheral
- * @param val write value
- * @return None
- */
- #define __LL_UART_TxBuf9bits_Write(__UART__, val) \
- MODIFY_REG((__UART__)->THR, UART_THR_9bits_Msk, (((val) & 0x1ffUL) << UART_THR_LSB_8bits_Pos))
- /**
- * @brief divisor latch low wirte
- * @param __UART__ Specifies UART peripheral
- * @param val wirte value
- * @return None
- */
- #define __LL_UART_DivLatchLow_Write(__UART__, val) WRITE_REG((__UART__)->DLL, (val & UART_DLL_DLL_Msk))
- /**
- * @brief divisor latch high wirte
- * @param __UART__ Specifies UART peripheral
- * @param val wirte value
- * @return None
- */
- #define __LL_UART_DivLatchHigh_Write(__UART__, val) WRITE_REG((__UART__)->DLH, (val & UART_DLH_DLH_Msk))
- /**
- * @brief programmable THRE interrupt enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_THRE_INT_En(__UART__) SET_BIT((__UART__)->IER, UART_IER_PTIME_Msk)
- /**
- * @brief programmable THRE interrupt disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_THRE_INT_Dis(__UART__) CLEAR_BIT((__UART__)->IER, UART_IER_PTIME_Msk)
- /**
- * @brief modem status interrupt enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_ModemSta_INT_En(__UART__) SET_BIT((__UART__)->IER, UART_IER_EDSSI_Msk)
- /**
- * @brief modem status interrupt disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_ModemSta_INT_Dis(__UART__) CLEAR_BIT((__UART__)->IER, UART_IER_EDSSI_Msk)
- /**
- * @brief RX line status interrupt enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RxLineSta_INT_En(__UART__) SET_BIT((__UART__)->IER, UART_IER_ELSI_Msk)
- /**
- * @brief RX line status interrupt disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RxLineSta_INT_Dis(__UART__) CLEAR_BIT((__UART__)->IER, UART_IER_ELSI_Msk)
- /**
- * @brief TX holding register empty interrupt enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_TxHoldEmpyt_INT_En(__UART__) SET_BIT((__UART__)->IER, UART_IER_ETBEI_Msk)
- /**
- * @brief TX holding register empty interrupt disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_TxHoldEmpyt_INT_Dis(__UART__) CLEAR_BIT((__UART__)->IER, UART_IER_ETBEI_Msk)
- /**
- * @brief RX data available interrupt enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RxDatAvl_INT_En(__UART__) SET_BIT((__UART__)->IER, UART_IER_ERBFI_Msk)
- /**
- * @brief RX data available interrupt disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RxDatAvl_INT_Dis(__UART__) CLEAR_BIT((__UART__)->IER, UART_IER_ERBFI_Msk)
- /**
- * @brief Judge is FIFOs enable or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't FIFOs enable
- * @retval 3 is FIFOs enable
- */
- #define __LL_UART_IsFIFOsEn(__UART__) (READ_BIT((__UART__)->IIR, UART_IIR_FIFOSE_Msk) >> UART_IIR_FIFOSE_Pos)
- /**
- * @brief Interrupt ID get
- * @param __UART__ Specifies UART peripheral
- * @return Interrupt ID
- */
- #define __LL_UART_INT_ID_Get(__UART__) (READ_BIT((__UART__)->IIR, UART_IIR_IID_Msk) >> UART_IIR_IID_Pos)
- /**
- * @brief FCR register write
- * @param __UART__ Specifies UART peripheral
- * @param val write val
- * @return None
- */
- #define __LL_UART_FCR_Write(__UART__, val) WRITE_REG((__UART__)->FCR, val)
- /**
- * @brief Divisor latch access set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_DivLatchAccess_Set(__UART__) SET_BIT((__UART__)->LCR, UART_LCR_DLAB_Msk)
- /**
- * @brief Divisor latch access clear
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_DivLatchAccess_Clr(__UART__) CLEAR_BIT((__UART__)->LCR, UART_LCR_DLAB_Msk)
- /**
- * @brief Break control set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_BreakCtrl_Set(__UART__) SET_BIT((__UART__)->LCR, UART_LCR_BC_Msk)
- /**
- * @brief Break control clear
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_BreakCtrl_Clr(__UART__) CLEAR_BIT((__UART__)->LCR, UART_LCR_BC_Msk)
- /**
- * @brief Stick parity set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_StickParity_Set(__UART__) SET_BIT((__UART__)->LCR, UART_LCR_Stick_Parity_Msk)
- /**
- * @brief Stick parity clear
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_StickParity_Clr(__UART__) CLEAR_BIT((__UART__)->LCR, UART_LCR_Stick_Parity_Msk)
- /**
- * @brief Even parity set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_EvenParity_Set(__UART__) SET_BIT((__UART__)->LCR, UART_LCR_EPS_Msk)
- /**
- * @brief Even parity clear
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_EvenParity_Clr(__UART__) CLEAR_BIT((__UART__)->LCR, UART_LCR_EPS_Msk)
- /**
- * @brief Parity enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_Parity_En(__UART__) SET_BIT((__UART__)->LCR, UART_LCR_PEN_Msk)
- /**
- * @brief Parity disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_Parity_Dis(__UART__) CLEAR_BIT((__UART__)->LCR, UART_LCR_PEN_Msk)
- /**
- * @brief Judge parity is enable or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 Parity isn't enable
- * @retval 1 Parity is enable
- */
- #define __LL_UART_IsParityEn(__UART__) (READ_BIT((__UART__)->LCR, UART_LCR_PEN_Msk) >> UART_LCR_PEN_Pos)
- /**
- * @brief Stop 1bit set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_Stop1Bit_Set(__UART__) CLEAR_BIT((__UART__)->LCR, UART_LCR_STOP_Msk)
- /**
- * @brief Stop 2bits set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_Stop2bits_Set(__UART__) SET_BIT((__UART__)->LCR, UART_LCR_STOP_Msk)
- /**
- * @brief Data length select
- * @param __UART__ Specifies UART peripheral
- * @param val select value
- * @return None
- */
- #define __LL_UART_DatLen_Sel(__UART__, val) MODIFY_REG((__UART__)->LCR, UART_LCR_DLS_Msk, ((val & 0x3UL) << UART_LCR_DLS_Pos))
- /**
- * @brief Judge is character address or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't character address
- * @retval 1 is character address
- */
- #define __LL_UART_IsCharacterAddr(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_ADDR_RCVD_Msk) >> UART_LSR_ADDR_RCVD_Pos)
- /**
- * @brief Judge is RX FIFO error or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't RX FIFO error
- * @retval 1 is RX FIFO error
- */
- #define __LL_UART_IsRxFIFOErr(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_RFE_Msk) >> UART_LSR_RFE_Pos)
- /**
- * @brief Judge is TX empty or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't TX empty
- * @retval 1 is TX empty
- */
- #define __LL_UART_IsTxEmpty(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_TEMT_Msk) >> UART_LSR_TEMT_Pos)
- /**
- * @brief Judge is TX hold register empty or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't TX hold register empty
- * @retval 1 is TX hold register empty
- */
- #define __LL_UART_IsTxHoldRegEmpty(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_THRE_Msk) >> UART_LSR_THRE_Pos)
- /**
- * @brief Judge is break interrupt or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't break interrupt
- * @retval 1 is break interrupt
- */
- #define __LL_UART_IsBreakInt(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_BI_Msk) >> UART_LSR_BI_Pos)
- /**
- * @brief Judge is frame error or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't frame error
- * @retval 1 is frame error
- */
- #define __LL_UART_IsFrameErr(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_FE_Msk) >> UART_LSR_FE_Pos)
- /**
- * @brief Judge is parity error or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't parity error
- * @retval 1 is parity error
- */
- #define __LL_UART_IsParityErr(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_PE_Msk) >> UART_LSR_PE_Pos)
- /**
- * @brief Judge is overrun error or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't overrun error
- * @retval 1 is overrun error
- */
- #define __LL_UART_IsOverrunErr(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_OE_Msk) >> UART_LSR_OE_Pos)
- /**
- * @brief Judge is data ready or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't data ready
- * @retval 1 is data ready
- */
- #define __LL_UART_IsDatReady(__UART__) (READ_BIT((__UART__)->LSR, UART_LSR_DR_Msk) >> UART_LSR_DR_Pos)
- /**
- * @brief Line status get
- * @param __UART__ Specifies UART peripheral
- * @return Line status
- */
- #define __LL_UART_LineSta_Get(__UART__) READ_BIT((__UART__)->LSR, UART_LSR_ALL_BIT_Msk)
- /**
- * @brief Judge is RXFIFO full or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 isn't RXFIFO full
- * @retval 1 is RXFIFO full
- */
- #define __LL_UART_IsRxFIFOFull(__UART__) (READ_BIT((__UART__)->USR, UART_USR_RFF_Msk) >> UART_USR_RFF_Pos)
- /**
- * @brief Judge is RXFIFO not empty or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 RXFIFO is empty
- * @retval 1 RXFIFO is not empty
- */
- #define __LL_UART_IsRxFIFONotEmpty(__UART__) (READ_BIT((__UART__)->USR, UART_USR_RFNE_Msk) >> UART_USR_RFNE_Pos)
- /**
- * @brief Judge is TXFIFO empty or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 TXFIFO is not empty
- * @retval 1 TXFIFO is empty
- */
- #define __LL_UART_IsTxFIFOEmpty(__UART__) (READ_BIT((__UART__)->USR, UART_USR_TFE_Msk) >> UART_USR_TFE_Pos)
- /**
- * @brief Judge is TXFIFO not full or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 TXFIFO is full
- * @retval 1 TXFIFO is not full
- */
- #define __LL_UART_IsTxFIFONotFull(__UART__) (READ_BIT((__UART__)->USR, UART_USR_TFNF_Msk) >> UART_USR_TFNF_Pos)
- /**
- * @brief TXFIFO level get
- * @param __UART__ Specifies UART peripheral
- * @return TXFIFO level
- */
- #define __LL_UART_TxFIFOLevel_Get(__UART__) (READ_BIT((__UART__)->TFL, UART_TFL_TFL_Msk) >> UART_TFL_TFL_Pos)
- /**
- * @brief RXFIFO level get
- * @param __UART__ Specifies UART peripheral
- * @return RXFIFO level
- */
- #define __LL_UART_RxFIFOLevel_Get(__UART__) (READ_BIT((__UART__)->RFL, UART_RFL_RFL_Msk) >> UART_RFL_RFL_Pos)
- /**
- * @brief TX halt enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_TxHalt_En(__UART__) SET_BIT((__UART__)->HTX, UART_HTX_HTX_Msk)
- /**
- * @brief TX halt disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_TxHalt_Dis(__UART__) CLEAR_BIT((__UART__)->HTX, UART_HTX_HTX_Msk)
- /**
- * @brief TX mode set
- * @param __UART__ Specifies UART peripheral
- * @param mode tx mode
- * @return None
- */
- #define __LL_UART_TxMode_Set(__UART__, mode) MODIFY_REG((__UART__)->TCR, UART_TCR_XFER_MODE_Msk, mode)
- /**
- * @brief DE signal active high set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_DE_ActHigh_Set(__UART__) SET_BIT((__UART__)->TCR, UART_TCR_DE_POL_Msk)
- /**
- * @brief DE signal active low set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_DE_ActLow_Set(__UART__) CLEAR_BIT((__UART__)->TCR, UART_TCR_DE_POL_Msk)
- /**
- * @brief RE signal active high set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RE_ActHigh_Set(__UART__) SET_BIT((__UART__)->TCR, UART_TCR_RE_POL_Msk)
- /**
- * @brief RE signal active low set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RE_ActLow_Set(__UART__) CLEAR_BIT((__UART__)->TCR, UART_TCR_RE_POL_Msk)
- /**
- * @brief RS485 mode enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RS485Mode_En(__UART__) SET_BIT((__UART__)->TCR, UART_TCR_RS485_EN_Msk)
- /**
- * @brief RS485 mode disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RS485Mode_Dis(__UART__) CLEAR_BIT((__UART__)->TCR, UART_TCR_RS485_EN_Msk)
- /**
- * @brief DE enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_DE_En(__UART__) SET_BIT((__UART__)->DE_EN, UART_DE_EN_DE_EN_Msk)
- /**
- * @brief DE disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_DE_Dis(__UART__) CLEAR_BIT((__UART__)->DE_EN, UART_DE_EN_DE_EN_Msk)
- /**
- * @brief RE enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_RE_En(__UART__) SET_BIT((__UART__)->RE_EN, UART_RE_EN_RE_EN_Msk)
- /**
- * @brief DE deassertion time set
- * @param __UART__ Specifies UART peripheral
- * @param val set value
- * @return None
- */
- #define __LL_UART_DE_DeAssertTime_Set(__UART__, val) \
- MODIFY_REG((__UART__)->DET, UART_DET_DE_DEASSERT_TIME_Msk, ((val & 0xffUL) << UART_DET_DE_DEASSERT_TIME_Pos))
- /**
- * @brief DE assertion time set
- * @param __UART__ Specifies UART peripheral
- * @param val set value
- * @return None
- */
- #define __LL_UART_DE_AssertTime_Set(__UART__, val) \
- MODIFY_REG((__UART__)->DET, UART_DET_DE_ASSERT_TIME_Msk, ((val & 0xffUL) << UART_DET_DE_ASSERT_TIME_Pos))
- /**
- * @brief RE to DE turn around time set
- * @param __UART__ Specifies UART peripheral
- * @param val set value
- * @return None
- */
- #define __LL_UART_REtoDE_TurnAroundTime_Set(__UART__, val) \
- MODIFY_REG((__UART__)->TAT, UART_TAT_RE_TO_DE_TIME_Msk, ((val & 0xffffUL) << UART_TAT_RE_TO_DE_TIME_Pos))
- /**
- * @brief DE to RE turn around time set
- * @param __UART__ Specifies UART peripheral
- * @param val set value
- * @return None
- */
- #define __LL_UART_DEtoRE_TurnAroundTime_Set(__UART__, val) \
- MODIFY_REG((__UART__)->TAT, UART_TAT_DE_TO_RE_TIME_Msk, ((val & 0xffffUL) << UART_TAT_DE_TO_RE_TIME_Pos))
- /**
- * @brief Divisor latch fraction set
- * @param __UART__ Specifies UART peripheral
- * @param val set value
- * @return None
- */
- #define __LL_UART_DivLatchFrac_Set(__UART__, val) MODIFY_REG((__UART__)->DLF, UART_DLF_DLF_Msk, ((val & 0xfUL) << UART_DLF_DLF_Pos))
- /**
- * @brief RAR set
- * @param __UART__ Specifies UART peripheral
- * @param addr set address
- * @return None
- */
- #define __LL_UART_RAR_Set(__UART__, addr) MODIFY_REG((__UART__)->RAR, UART_RAR_RAR_Msk, ((addr & 0xffUL) << UART_RAR_RAR_Pos))
- /**
- * @brief TAR set
- * @param __UART__ Specifies UART peripheral
- * @param addr set address
- * @return None
- */
- #define __LL_UART_TAR_Set(__UART__, addr) MODIFY_REG((__UART__)->TAR, UART_TAR_TAR_Msk, ((addr & 0xffUL) << UART_TAR_TAR_Pos))
- /**
- * @brief TX mode 9bits set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_TxMode9bits_Set(__UART__) SET_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_TRANSMIT_MODE_Msk)
- /**
- * @brief TX mode 8bits set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_TxMode8bits_Set(__UART__) CLEAR_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_TRANSMIT_MODE_Msk)
- /**
- * @brief TX mode status get
- * @param __UART__ Specifies UART peripheral
- * @retval 0 TX mode is 8bits
- * @retval 1 TX mode is 9bits
- */
- #define __LL_UART_TxModeSta_Get(__UART__) \
- (READ_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_TRANSMIT_MODE_Msk) >> UART_LCR_EXT_TRANSMIT_MODE_Pos)
- /**
- * @brief Send address set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_SendAddr_Start(__UART__) SET_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_SEND_ADDR_Msk)
- /**
- * @brief Send data set
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_SendDat_Start(__UART__) CLEAR_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_SEND_ADDR_Msk)
- /**
- * @brief Address match mode enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_AddrMatchMode_En(__UART__) SET_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_ADDR_MATCH_Msk)
- /**
- * @brief Address match mode disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_AddrMatchMode_Dis(__UART__) CLEAR_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_ADDR_MATCH_Msk)
- /**
- * @brief Data length extension 9bits enable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_DatLen9bitsExt_En(__UART__) SET_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_DLS_E_Msk)
- /**
- * @brief Data length extension 9bits disable
- * @param __UART__ Specifies UART peripheral
- * @return None
- */
- #define __LL_UART_DatLen9bitsExt_Dis(__UART__) CLEAR_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_DLS_E_Msk)
- /**
- * @brief Judge data length extension 9bits is enable or not
- * @param __UART__ Specifies UART peripheral
- * @retval 0 Data length extension 9bits isn't enable
- * @retval 1 Data length extension 9bits is enable
- */
- #define __LL_UART_IsDatLen9bitsEn(__UART__) (READ_BIT((__UART__)->LCR_EXT, UART_LCR_EXT_DLS_E_Msk) >> UART_LCR_EXT_DLS_E_Pos)
- /**
- * @}
- */
- /* Exported functions --------------------------------------------------------*/
- /** @addtogroup UART_LL_Exported_Functions
- * @{
- */
- /** @addtogroup UART_LL_Exported_Functions_Group1
- * @{
- */
- LL_StatusETypeDef LL_UART_Init(UART_TypeDef *Instance, UART_InitTypeDef *Init);
- LL_StatusETypeDef LL_UART_DeInit(UART_TypeDef *Instance);
- void LL_UART_MspInit(UART_TypeDef *Instance);
- void LL_UART_MspDeInit(UART_TypeDef *Instance);
- /**
- * @}
- */
- /** @addtogroup UART_LL_Exported_Functions_Group2
- * @{
- */
- LL_StatusETypeDef LL_UART_Transmit_CPU(UART_TypeDef *Instance, uint8_t *pData, uint16_t Size, uint32_t Timeout);
- LL_StatusETypeDef LL_UART_Receive_CPU(UART_TypeDef *Instance, uint8_t *pData, uint16_t Size, uint32_t Timeout);
- LL_StatusETypeDef LL_UART_Transmit_IT(UART_TypeDef *Instance);
- LL_StatusETypeDef LL_UART_Receive_IT(UART_TypeDef *Instance);
- #ifdef LL_DMA_MODULE_ENABLED
- LL_StatusETypeDef LL_UART_Transmit_DMA(UART_TypeDef *Instance, DMA_UserCfgTypeDef *dma_user_cfg,
- UART_DMAHandleTypeDef *huart, uint32_t Timeout);
- LL_StatusETypeDef LL_UART_Receive_DMA(UART_TypeDef *Instance, DMA_UserCfgTypeDef *dma_user_cfg,
- UART_DMAHandleTypeDef *huart, uint32_t Timeout);
- #endif
- /**
- * @}
- */
- /** @addtogroup UART_LL_Exported_Functions_Group3
- * @{
- */
- LL_StatusETypeDef LL_Uart_9bit_SendAddress(UART_TypeDef *Instance, uint8_t TxAddr);
- LL_StatusETypeDef LL_UART_RS485Cfg(UART_TypeDef *Instance, UART_Rs485CfgTypeDef *cfg);
- uint8_t LL_UART_TxFIFOLVL_GET(UART_TypeDef *Instance);
- uint8_t LL_UART_RxFIFOLVL_GET(UART_TypeDef *Instance);
- /**
- * @}
- */
- /** @addtogroup UART_LL_Exported_Functions_Interrupt
- * @{
- */
- void LL_UART_IRQHandler(UART_TypeDef *Instance);
- void LL_UART_ModemStaCallback(UART_TypeDef *Instance);
- void LL_UART_TxEmptyCallback(UART_TypeDef *Instance);
- void LL_UART_RxAvailableCallback(UART_TypeDef *Instance);
- void LL_UART_RxLineStaCallback(UART_TypeDef *Instance);
- void LL_UART_BusyDetCallback(UART_TypeDef *Instance);
- void LL_UART_CharTimeOutCallback(UART_TypeDef *Instance);
- void LL_UART_BreakErrCallback(UART_TypeDef *Instance);
- void LL_UART_FrameErrCallback(UART_TypeDef *Instance);
- void LL_UART_ParityErrCallback(UART_TypeDef *Instance);
- void LL_UART_RxOverrunErrCallback(UART_TypeDef *Instance);
- /**
- * @}
- */
- /**
- * @}
- */
- /* Private types -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- /* Private constants ---------------------------------------------------------*/
- /* Private macros ------------------------------------------------------------*/
- /* Private functions ---------------------------------------------------------*/
- /**
- * @}
- */
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif /* __cplusplus */
- #endif /* _TAE32F53XX_LL_UART_H_ */
- /************************* (C) COPYRIGHT Tai-Action *****END OF FILE***********/
|