104 uart->
INTEN &= ~ u32InterruptFlag;
119 uart->
MODEM &= ~UART_MODEM_RTS_Msk;
143 uart->
INTEN |= u32InterruptFlag;
157 uint8_t u8UartClkSrcSel;
159 uint32_t u32ClkDiv = 0;
160 uint32_t u32Baud_Div;
162 uint32_t u32RealBaudrate = 0, u32Err = 0, u32OldErr = 0;
163 uint32_t u32A = 0, u32B = 0;
170 if(u8UartClkSrcSel == 0)
172 else if(u8UartClkSrcSel == 1)
174 else if(u8UartClkSrcSel >= 2)
178 u32Clk = u32Clk/(u32ClkDiv + 1);
180 if (u32baudrate != 0)
186 if(u32Baud_Div > 0xFFFF)
193 for(i = 0; i < 0xf; i++)
195 u32Baud_Div = ((u32Clk + (u32baudrate*(9+i)/2)) / u32baudrate / (9+i));
196 u32RealBaudrate = u32Clk/(u32Baud_Div) / (9+i);
198 if(u32RealBaudrate > u32baudrate)
200 u32Err = u32RealBaudrate - u32baudrate;
202 else if (u32RealBaudrate < u32baudrate)
204 u32Err = u32baudrate - u32RealBaudrate;
209 u32A = u32Baud_Div - 2;
216 u32A = u32Baud_Div - 2;
221 if (u32OldErr > u32Err)
224 u32A = u32Baud_Div - 2;
248 uint32_t u32Count, u32delayno;
250 for (u32Count = 0; u32Count < u32ReadBytes; u32Count++)
255 (u32delayno-- > 0)) ;
260 pu8RxBuf[u32Count] = uart->
DAT;
282 uint8_t u8UartClkSrcSel;
284 uint32_t u32ClkDiv = 0;
285 uint32_t u32Baud_Div = 0;
287 uint32_t u32RealBaudrate = 0, u32Err = 0, u32OldErr = 0;
288 uint32_t u32A = 0, u32B = 0;
292 if(u8UartClkSrcSel == 0)
294 else if(u8UartClkSrcSel == 1)
296 else if(u8UartClkSrcSel >= 2)
300 u32Clk = u32Clk/(u32ClkDiv + 1);
302 if (u32baudrate != 0)
308 if(u32Baud_Div > 0xFFFF)
315 for(i = 0; i < 0xf; i++)
317 u32Baud_Div = ((u32Clk + (u32baudrate*(9+i)/2)) / u32baudrate / (9+i));
318 u32RealBaudrate = u32Clk/(u32Baud_Div) / (9+i);
320 if(u32RealBaudrate > u32baudrate)
322 u32Err = u32RealBaudrate - u32baudrate;
324 else if (u32RealBaudrate < u32baudrate)
326 u32Err = u32baudrate - u32RealBaudrate;
331 u32A = u32Baud_Div - 2;
338 u32A = u32Baud_Div - 2;
343 if (u32OldErr > u32Err)
346 u32A = u32Baud_Div - 2;
355 uart->
LINE = u32data_width | u32parity | u32stop_bits;
369 uart->
TOUT = (uart->
TOUT & ~UART_TOUT_TOIC_Msk)| (u32TOC);
385 uint8_t u8UartClkSrcSel;
387 uint32_t u32ClkDiv = 0;
391 if(u8UartClkSrcSel == 0)
393 else if(u8UartClkSrcSel == 1)
395 else if(u8UartClkSrcSel >= 2)
399 u32Clk = u32Clk/(u32ClkDiv + 1);
403 uart->
IRDA &= ~UART_IRDA_TXINV_Msk;
438 uint32_t u32Count, u32delayno;
440 for(u32Count=0; u32Count != u32WriteBytes; u32Count++)
445 (u32delayno-- > 0)) ;
450 uart->
DAT = pu8TxBuf[u32Count];
Mini58 series peripheral access layer header file. This file contains all the peripheral register's d...
#define UART_FIFOSTS_BIF_Msk
#define UART_FIFOSTS_TXOVIF_Msk
#define UART_FIFOSTS_RXOVIF_Msk
#define UART_INTEN_ATORTSEN_Msk
#define UART_INTSTS_BUFERRINT_Msk
#define UART_ALTCTL_ADDRMV_Pos
#define UART_FIFOSTS_ADDRDETF_Msk
#define UART_IRDA_RXINV_Msk
#define UART_INTSTS_RXTOINT_Msk
#define UART_INTSTS_MODEMINT_Msk
#define UART_FUNSEL_FUN_SEL_Pos
#define UART_INTEN_ATOCTSEN_Msk
#define UART_INTSTS_RLSINT_Msk
#define UART_MODEM_RTSACTLV_Msk
#define UART_FIFOSTS_TXEMPTYF_Msk
#define UART_BAUD_EDIVM1_Pos
#define UART_FIFOSTS_RXEMPTY_Msk
#define UART_FIFOSTS_PEF_Msk
#define UART_MODEMSTS_CTSDETF_Msk
#define UART_BAUD_BRD_Pos
#define UART_FIFOSTS_FEF_Msk
#define UART_INTSTS_RXTOIF_Msk
#define UART_IRDA_TXEN_Msk
#define UART_MODEMSTS_CTSACTLV_Msk
#define UART_INTEN_TOCNTEN_Msk
__STATIC_INLINE uint32_t CLK_GetPLLClockFreq(void)
Get PLL clock frequency.
#define CLK_CLKSEL1_UARTSEL_Msk
#define CLK_CLKSEL1_UARTSEL_Pos
#define CLK_CLKDIV_UARTDIV_Pos
#define CLK_CLKDIV_UARTDIV_Msk
#define CLK
Pointer to CLK register structure.
#define UART1
Pointer to UART1 register structure.
#define UART_FIFO_RTSTRGLV_1BYTE
#define UART_FIFO_RFITL_1BYTE
#define UART_FUNC_SEL_UART
#define UART_FUNC_SEL_RS485
void UART_SelectRS485Mode(UART_T *uart, uint32_t u32Mode, uint32_t u32Addr)
The function is used to set RS485 relative setting.
void UART_EnableInt(UART_T *uart, uint32_t u32InterruptFlag)
The function is used to enable UART specified interrupt and disable NVIC UART IRQ.
#define UART_BAUD_MODE1
Calculate UART baudrate mode0 divider.
#define UART_BAUD_MODE2
Calculate UART baudrate mode0 divider.
#define UART_BAUD_MODE0
Calculate UART baudrate mode0 divider.
void UART_SetTimeoutCnt(UART_T *uart, uint32_t u32TOC)
This function use to set Rx timeout count.
void UART_Close(UART_T *uart)
The function is used to disable UART.
#define UART_BAUD_MODE0_DIVIDER(u32SrcFreq, u32BaudRate)
Calculate UART baudrate mode0 divider.
void UART_ClearIntFlag(UART_T *uart, uint32_t u32InterruptFlag)
The function is used to clear UART specified interrupt flag.
void UART_DisableFlowCtrl(UART_T *uart)
The function is used to disable UART auto flow control.
void UART_EnableFlowCtrl(UART_T *uart)
The function is used to Enable UART auto flow control.
uint32_t UART_Write(UART_T *uart, uint8_t *pu8TxBuf, uint32_t u32WriteBytes)
The function is to write data into TX buffer to transmit data by UART.
#define UART_BAUD_MODE2_DIVIDER(u32SrcFreq, u32BaudRate)
Calculate UART baudrate mode2 divider.
void UART_SetLine_Config(UART_T *uart, uint32_t u32baudrate, uint32_t u32data_width, uint32_t u32parity, uint32_t u32stop_bits)
This function use to config UART line setting.
void UART_DisableInt(UART_T *uart, uint32_t u32InterruptFlag)
The function is used to disable UART specified interrupt and disable NVIC UART IRQ.
void UART_SelectIrDAMode(UART_T *uart, uint32_t u32Buadrate, uint32_t u32Direction)
The function is used to configure IrDA relative settings. It consists of TX or RX mode and baudrate.
uint32_t UART_Read(UART_T *uart, uint8_t *pu8RxBuf, uint32_t u32ReadBytes)
The function is used to read Rx data from RX FIFO and the data will be stored in pu8RxBuf.
void UART_Open(UART_T *uart, uint32_t u32baudrate)
This function use to enable UART function and set baud-rate.