| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- /**
- ******************************************************************************
- * @file lib_uart.h
- * @author Application Team
- * @version V1.1.0
- * @date 2019-10-28
- * @brief UART library.
- ******************************************************************************
- * @attention
- *
- ******************************************************************************
- */
- #ifndef __LIB_UART_H
- #define __LIB_UART_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "target.h"
-
- //UART Init struct
- typedef struct
- {
- uint32_t Mode;
- uint32_t Parity;
- uint32_t FirstBit;
- uint32_t Baudrate;
- } UART_InitType;
- //Mode
- #define UART_MODE_RX (0x1U << UART_CTRL_RXEN_Pos)
- #define UART_MODE_TX (0x1U << UART_CTRL_TXEN_Pos)
- #define UART_MODE_OFF 0
- #define UART_MODE_Msk (UART_MODE_RX | UART_MODE_TX)
- //Parity
- #define UART_PARITY_EVEN (0x1U << UART_CTRL2_PMODE_Pos)
- #define UART_PARITY_ODD (0x3U << UART_CTRL2_PMODE_Pos)
- #define UART_PARITY_0 (0x5U << UART_CTRL2_PMODE_Pos)
- #define UART_PARITY_1 (0x7U << UART_CTRL2_PMODE_Pos)
- #define UART_PARITY_NONE (0x0U << UART_CTRL2_PMODE_Pos)
- //FirstBit
- #define UART_FIRSTBIT_LSB 0
- #define UART_FIRSTBIT_MSB (0x1U << UART_CTRL2_MSB_Pos)
- //UART Configration Information struct
- typedef struct
- {
- uint32_t Mode_Transmit :1; //1: TX Enable; 0: TX Disable
- uint32_t Mode_Receive :1; //1: RX Enable; 0: RX Disable
- uint32_t Baudrate; //The value of current budrate
- uint8_t Parity; //0:1+8+1 mode; 1: Even parity; 3:Odd parity; 5: parity bit=0; 7: parity bit=1;
- uint8_t FirstBit; //0: LSB transmit first; 1: MSB transmit first
- } UART_ConfigINFOType;
- //status
- #define UART_FLAG_DMATXDONE (0x1U << UART_STATE_DMATXDONE_Pos)
- #define UART_FLAG_RXPARITY (0x1U << UART_STATE_RXPSTS_Pos)
- #define UART_FLAG_TXDONE (0x1U << UART_STATE_TXDONE_Pos)
- #define UART_FLAG_RXPE (0x1U << UART_STATE_RXPE_Pos)
- #define UART_FLAG_RXOV (0x1U << UART_STATE_RXOV_Pos)
- #define UART_FLAG_TXOV (0x1U << UART_STATE_TXOV_Pos)
- #define UART_FLAG_RXFULL (0x1U << UART_STATE_RXFULL_Pos)
- #define UART_FLAG_RCMsk (UART_FLAG_DMATXDONE \
- |UART_FLAG_TXDONE \
- |UART_FLAG_RXPE \
- |UART_FLAG_RXOV \
- |UART_FLAG_RXFULL \
- |UART_FLAG_TXOV)
- //interrupt
- #define UART_INT_TXDONE (0x1U << UART_CTRL_TXDONEIE_Pos)
- #define UART_INT_RXPE (0x1U << UART_CTRL_RXPEIE_Pos)
- #define UART_INT_RXOV (0x1U << UART_CTRL_RXOVIE_Pos)
- #define UART_INT_TXOV (0x1U << UART_CTRL_TXOVIE_Pos)
- #define UART_INT_RX (0x1U << UART_CTRL_RXIE_Pos)
- #define UART_INT_Msk (UART_INT_TXDONE \
- |UART_INT_RXPE \
- |UART_INT_RXOV \
- |UART_INT_TXOV \
- |UART_INT_RX)
- //INTStatus
- #define UART_INTSTS_TXDONE (0x1U << UART_INTSTS_TXDONEIF_Pos)
- #define UART_INTSTS_RXPE (0x1U << UART_INTSTS_RXPEIF_Pos)
- #define UART_INTSTS_RXOV (0x1U << UART_INTSTS_RXOVIF_Pos)
- #define UART_INTSTS_TXOV (0x1U << UART_INTSTS_TXOVIF_Pos)
- #define UART_INTSTS_RX (0x1U << UART_INTSTS_RXIF_Pos)
- #define UART_INTSTS_Msk (UART_INTSTS_TXDONE \
- |UART_INTSTS_RXPE \
- |UART_INTSTS_RXOV \
- |UART_INTSTS_TXOV \
- |UART_INTSTS_RX)
-
- /* Private macros ------------------------------------------------------------*/
- #define IS_UART_MODE(__MODE__) (((((__MODE__) & UART_MODE_Msk) != 0U) && (((__MODE__) & ~UART_MODE_Msk) == 0U)))
- #define IS_UART_PARITY(__PARITY__) (((__PARITY__) == UART_PARITY_EVEN) ||\
- ((__PARITY__) == UART_PARITY_ODD) ||\
- ((__PARITY__) == UART_PARITY_0) ||\
- ((__PARITY__) == UART_PARITY_1) ||\
- ((__PARITY__) == UART_PARITY_NONE))
- #define IS_UART_FIRSTBIT(__FIRSTBIT__) (((__FIRSTBIT__) == UART_FIRSTBIT_LSB) ||\
- ((__FIRSTBIT__) == UART_FIRSTBIT_MSB))
- #define IS_UART_BAUDRATE(__BAUDRATE__) ((300UL <= (__BAUDRATE__)) &&\
- ((__BAUDRATE__) <= 819200UL))
- #define IS_UART_FLAGR(__FLAGR__) (((__FLAGR__) == UART_FLAG_DMATXDONE) ||\
- ((__FLAGR__) == UART_FLAG_RXPARITY) ||\
- ((__FLAGR__) == UART_FLAG_TXDONE) ||\
- ((__FLAGR__) == UART_FLAG_RXPE) ||\
- ((__FLAGR__) == UART_FLAG_RXOV) ||\
- ((__FLAGR__) == UART_FLAG_TXOV) ||\
- ((__FLAGR__) == UART_FLAG_RXFULL))
- #define IS_UART_FLAGC(__FLAGC__) ((((__FLAGC__) & UART_FLAG_RCMsk) != 0U) &&\
- (((__FLAGC__) & ~UART_FLAG_RCMsk) == 0U))
- #define IS_UART_INT(__INT__) ((((__INT__) & UART_INT_Msk) != 0U) &&\
- (((__INT__) & ~UART_INT_Msk) == 0U))
- #define IS_UART_INTFLAGR(__INTFLAGR__) (((__INTFLAGR__) == UART_INTSTS_TXDONE) ||\
- ((__INTFLAGR__) == UART_INTSTS_RXPE) ||\
- ((__INTFLAGR__) == UART_INTSTS_RXOV) ||\
- ((__INTFLAGR__) == UART_INTSTS_TXOV) ||\
- ((__INTFLAGR__) == UART_INTSTS_RX))
- #define IS_UART_INTFLAGC(__INTFLAGC__) ((((__INTFLAGC__) & UART_INTSTS_Msk) != 0U) &&\
- (((__INTFLAGC__) & ~UART_INTSTS_Msk) == 0U))
- /****************************** UART Instances ********************************/
- #define IS_UART_ALL_INSTANCE(INSTANCE) (((INSTANCE) == UART0) || \
- ((INSTANCE) == UART1) || \
- ((INSTANCE) == UART2) || \
- ((INSTANCE) == UART3) || \
- ((INSTANCE) == UART4) || \
- ((INSTANCE) == UART5))
- /* Exported Functions ------------------------------------------------------- */
- /* UART Exported Functions Group1:
- Initialization and functions --------------*/
- void UART_DeInit(UART_Type *UARTx);
- void UART_Init(UART_Type *UARTx, UART_InitType *InitStruct);
- void UART_StructInit(UART_InitType *InitStruct);
- /* UART Exported Functions Group2:
- (Interrupt) Flag --------------------------*/
- uint8_t UART_GetFlag(UART_Type *UARTx, uint32_t FlagMask);
- void UART_ClearFlag(UART_Type *UARTx, uint32_t FlagMask);
- void UART_INTConfig(UART_Type *UARTx, uint32_t INTMask, uint8_t NewState);
- uint8_t UART_GetINTStatus(UART_Type *UARTx, uint32_t INTMask);
- void UART_ClearINTStatus(UART_Type *UARTx, uint32_t INTMask);
- /* UART Exported Functions Group3:
- Transfer datas ----------------------------*/
- void UART_SendData(UART_Type *UARTx, uint8_t ch);
- uint8_t UART_ReceiveData(UART_Type *UARTx);
- /* UART Exported Functions Group4:
- MISC Configuration ------------------------*/
- void UART_BaudrateConfig(UART_Type *UARTx, uint32_t BaudRate);
- void UART_Cmd(UART_Type *UARTx, uint32_t Mode, uint32_t NewState);
- void UART_GetConfigINFO(UART_Type *UARTx, UART_ConfigINFOType *ConfigInfo);
-
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __LIB_UART_H */
- /*********************************** END OF FILE ******************************/
|