123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- /*
- File Name : yc_uart.h
- Author : Yichip
- Version : V1.0
- Date : 2019/12/4
- Description : UART encapsulation.
- */
- #ifndef __YC_UART_H__
- #define __YC_UART_H__
- #include "yc3121.h"
- /** @def time of UART receive data time out intterrupt. real time = regvalue*48
- * @{
- */
- #define TIME_IT_TIMEOUT (uint16_t)0x01
- /** @defgroup USART_Mode
- * @{
- */
- #define Mode_Single_Line (1<<6)
- #define Mode_duplex (0<<6)
- #define IS_MODE(MODE) (((MODE) == Mode_Single_Line) ||\
- ((MODE) == Mode_duplex))
- /**
- * @}
- */
- /** @
- * @defgroup USART_DataBits
- */
- #define Databits_8b (0<<2)
- #define Databits_9b (1<<2)
- #define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == Databits_8b) || \
- ((LENGTH) == Databits_9b))
- /**
- * @}
- */
- /** @defgroup USART_Stop_Bits
- * @{
- */
- #define StopBits_1 (0<<3)
- #define StopBits_2 (1<<3)
- #define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == StopBits_1) || \
- ((STOPBITS) == StopBits_2) )
- /**
- * @}
- */
- /** @defgroup USART_Hardware_Flow_Control
- * @{
- */
- #define FlowCtrl_None (0<<4)
- #define FlowCtrl_Enable (1<<4)
- #define IS_FlowCtrl(CONTROL) (((CONTROL) == FlowCtrl_None) || \
- ((CONTROL) == FlowCtrl_Enable))
- /**
- * @}
- */
- /** @defgroup UART_Interrupt_Type_definition
- * @{
- */
- #define UART_IT_TX 0x01
- #define UART_IT_RX 0x02
- #define IS_UART_IT(x) (x == UART_IT_TX)||(x == UART_IT_RX)
- /**
- * @}
- */
- /** @defgroup USART_Parity
- * @{
- */
- #define Parity_None (0<<1)
- #define Parity_Even (0<<1)
- #define Parity_Odd (1<<1)
- #define IS_PARITY(PARITY) (((PARITY) == Parity_Even) ||\
- ((PARITY) == Parity_None) ||\
- ((PARITY) == Parity_Odd))
- /**
- * @}
- */
- /** @defgroup USART_BaudRate
- * @{
- */
- #define IS_BAUDRATE(BAUDRATE) (((BAUDRATE) > 0x5B8) && ((BAUDRATE) < 0x0044AA21))
- /**
- * @}
- */
- typedef struct
- {
- uint8_t Mode; /*!< Specifies wether the Receive or Transmit mode is enabled or disabled.
- This parameter can be a value of @ref USART_Mode */
- uint32_t BaudRate; /*!< This member configures the USART communication baud rate. */
- uint8_t DataBits; /*!< Specifies the number of data bits transmitted or received in a frame.
- This parameter can be a value of @ref USART_DataBits */
- uint8_t StopBits; /*!< Specifies the number of stop bits transmitted.
- This parameter can be a value of @ref USART_Stop_Bits */
- uint8_t Parity; /*!< Specifies the parity mode.
- This parameter can be a value of @ref USART_Parity
- @note When parity is enabled, the computed parity is inserted
- at the MSB position of the transmitted data (9th bit when
- the word length is set to 9 data bits; 8th bit when the
- word length is set to 8 data bits). */
- uint8_t FlowCtrl; /*!< Specifies wether the hardware flow control mode is enabled or disabled.
- This parameter can be a value of @ref USART_Hardware_Flow_Control */
- int RxBufLen; /*!< Specifies uart DMA Rx buff length */
- } UART_InitTypeDef;
- /** @defgroup UART_TypeDef
- * @{
- */
- typedef enum
- {
- UART0 = 0,
- UART1,
- } UART_TypeDef;
- #define IS_UART(UARTx) (UARTx == UART0 ||UARTx == UART1)
- /**
- * @}
- */
- /**
- * @brief ENABLE or DISABLE UARTx auto flow control
- * @param USARTx: Select the USART or the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @param NewState:ENABLE or DISABLE auto flow control
- * @retval None
- */
- void UART_AutoFlowCtrlCmd(UART_TypeDef UARTx, FunctionalState NewState);
- /**
- * @brief Clear IT
- * @param USARTx: Select the USART or the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @retval None
- */
- void UART_ClearIT(UART_TypeDef UARTx);
- /**
- * @brief DeInit UART
- * @param UARTx: Select the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @retval None
- */
- void UART_DeInit(UART_TypeDef UARTx);
- /**
- * @brief Transmits datas via UART DMA .
- * @param USARTx: Select the USART or the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @param buf: pointer to a buf that contains the data you want transmit.
- * @param len: the buf length
- * @retval None
- */
- void UART_DMASendBuf(UART_TypeDef UARTx, uint8_t *buf, int len);
- /**
- * @brief Get IT Identity
- * @param UARTx: Select the UART peripheral.
- * @retval IT Identity
- */
- uint8_t UART_GetITIdentity(UART_TypeDef UARTx);
- /**
- * @brief Initializes the USARTx peripheral according to the specified
- * parameters in the USART_InitStruct .
- * @param UARTx: Select the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @param USART_InitStruct: pointer to a USART_InitTypeDef structure
- * that contains the configuration information for the specified USART
- * peripheral.
- * @retval None
- */
- void UART_Init(UART_TypeDef UARTx, UART_InitTypeDef *UART_InitStruct);
- /**
- * @brief Judge Rx fifo full is or not.
- * @param UARTx: Select the UART peripheral.
- * @retval TRUE:Rx fifo is full.
- * FALSE:Rx fifo is not full
- */
- Boolean UART_IsRXFIFOFull(UART_TypeDef UARTx);
- /**
- * @brief Judge Rx fifo empty is or not.
- * @param UARTx: Select the UART peripheral.
- * @retval TRUE:Rx fifo is not empty.
- * FALSE:Rx fifo is empty;
- */
- Boolean UART_IsRXFIFONotEmpty(UART_TypeDef UARTx);
- /**
- * @brief Judge UART is Busy or not
- * @param UARTx: Select the UART peripheral.
- * @retval None
- */
- Boolean UART_IsUARTBusy(UART_TypeDef UARTx);
- /**
- * @brief Config Interrupt trigger mode
- * @param USARTx: Select the USART or the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @param UART_IT: Interrupt trigger mode ,this param will the following values,
- * UART_IT_TX:interrupt trigger after send data completed.
- * UART_IT_RX:interrupt trigger when received data.
- * @param NewState:
- * @retval None
- */
- void UART_ITConfig(UART_TypeDef UARTx, uint32_t UART_IT, FunctionalState NewState);
- /**
- * @brief Receive single data through the USARTx peripheral.
- * @param USARTx: Select the USART or the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @retval None
- */
- uint8_t UART_ReceiveData(UART_TypeDef UARTx);
- /**
- * @brief Receives datas through the UART DMA.
- * @param USARTx: Select the USART or the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @param buf: pointer to a buf that contains the data you want receive.
- * @param len: the buf length
- * @retval None
- */
- int UART_RecvBuf(UART_TypeDef UARTx, uint8_t *buf, int len);
- /**
- * @brief T ransmits datas via UART DMA,the function will return after datas is sent.
- * @param USARTx: Select the USART or the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @param buf: pointer to a buf that contains the data you want transmit.
- * @param len: the buf length
- * @retval None
- */
- void UART_SendBuf(UART_TypeDef UARTx, uint8_t *buf, int len);
- /**
- * @brief UART Send One Data
- * @param UARTx: Select the UART peripheral.
- * @retval None
- */
- void UART_SendData(UART_TypeDef UARTx, uint8_t Data);
- /**
- * @brief UART_SetITTimeout
- * @param USARTx: Select the USART or the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * timeout: 0x0000~0xffff
- * @retval None
- */
- void UART_SetITTimeout(UART_TypeDef UARTx, uint16_t timeout);
- /**
- * @brief Set the number of uart receive data intterupt trigger
- * @param UARTx: Select the UART peripheral.
- * This parameter can be one of the following values:
- * UART0, UART1.
- * @param Bcnt: if the number of receive datas greater than Bcnt,interrupt trigger
- * @retval None
- */
- void UART_SetRxITNum(UART_TypeDef UARTx, uint8_t Bcnt);
- /**
- * @brief Fills each USART_InitStruct member with its default value.
- * @param USART_InitStruct: pointer to a USART_InitTypeDef structure
- * which will be initialized.
- * @retval None
- */
- void UART_StructInit(UART_InitTypeDef *UART_InitStruct);
- /**
- * @brief UART_ReceiveDataLen
- * @param UARTx: UART0 or UART1
- * @retval Data len
- */
- uint16_t UART_ReceiveDataLen(UART_TypeDef UARTx);
- #endif /*__YC_UART_H__*/
|