107 uint32_t u32IntFlag = 0ul;
108 uint32_t u32Tmp1, u32Tmp2;
113 if(u32Tmp1 && u32Tmp2)
121 if(u32Tmp1 && u32Tmp2)
129 if(u32Tmp1 && u32Tmp2)
137 if(u32Tmp1 && u32Tmp2)
145 if(u32Tmp1 && u32Tmp2)
153 if(u32Tmp1 && u32Tmp2)
161 if(u32Tmp1 && u32Tmp2)
211 uuart->
PROTIEN &= ~UUART_PROTIEN_ABRIEN_Msk;
217 uuart->
PROTIEN &= ~UUART_PROTIEN_RLSIEN_Msk;
223 uuart->
BUFCTL &= ~UUART_BUFCTL_RXOVIEN_Msk;
229 uuart->
INTEN &= ~UUART_INTEN_TXSTIEN_Msk;
235 uuart->
INTEN &= ~UUART_INTEN_TXENDIEN_Msk;
241 uuart->
INTEN &= ~UUART_INTEN_RXSTIEN_Msk;
247 uuart->
INTEN &= ~UUART_INTEN_RXENDIEN_Msk;
329 uint32_t u32PCLKFreq, u32PDSCnt, u32DSCnt, u32ClkDiv;
330 uint32_t u32Tmp, u32Tmp2, u32Min, u32MinClkDiv, u32MinDSCnt;
343 u32Div = u32PCLKFreq / u32baudrate;
344 u32Tmp = (u32PCLKFreq / u32Div) - u32baudrate;
345 u32Tmp2 = u32baudrate - (u32PCLKFreq / (u32Div+1ul));
347 if(u32Tmp >= u32Tmp2) u32Div = u32Div + 1ul;
349 u32Tmp = 0x400ul * 0x10ul;
350 for(u32PDSCnt = 1ul; u32PDSCnt <= 0x04ul; u32PDSCnt++)
352 if(u32Div <= (u32Tmp * u32PDSCnt))
break;
355 if(u32PDSCnt > 0x4ul) u32PDSCnt = 0x4ul;
357 u32Div = u32Div / u32PDSCnt;
360 u32Min = (uint32_t) - 1;
365 for(u32DSCnt = 6ul; u32DSCnt <= 0x10ul; u32DSCnt++)
368 u32ClkDiv = u32Div / u32DSCnt;
370 if(u32ClkDiv > 0x400ul)
373 u32Tmp = u32Div - (u32ClkDiv * u32DSCnt);
374 u32Tmp2 = u32Tmp + 1ul;
378 u32Tmp = u32Div - (u32ClkDiv * u32DSCnt);
379 u32Tmp2 = ((u32ClkDiv+1ul) * u32DSCnt) - u32Div;
382 if(u32Tmp >= u32Tmp2)
384 u32ClkDiv = u32ClkDiv + 1ul;
386 else u32Tmp2 = u32Tmp;
391 u32MinDSCnt = u32DSCnt;
392 u32MinClkDiv = u32ClkDiv;
403 uuart->
CTL &= ~UUART_CTL_FUNMODE_Msk;
417 return (u32PCLKFreq/u32PDSCnt/u32MinDSCnt/u32MinClkDiv);
434 uint32_t u32Count, u32delayno;
436 for(u32Count = 0ul; u32Count < u32ReadBytes; u32Count++)
443 if(u32delayno >= 0x40000000ul)
449 if(u32delayno >= 0x40000000ul)
454 pu8RxBuf[u32Count] = (uint8_t)uuart->
RXDAT;
487 uint32_t u32PCLKFreq, u32PDSCnt, u32DSCnt, u32ClkDiv;
488 uint32_t u32Tmp, u32Tmp2, u32Min, u32MinClkDiv, u32MinDSCnt;
501 if(u32baudrate != 0ul)
503 u32Div = u32PCLKFreq / u32baudrate;
504 u32Tmp = (u32PCLKFreq / u32Div) - u32baudrate;
505 u32Tmp2 = u32baudrate - (u32PCLKFreq / (u32Div+1ul));
507 if(u32Tmp >= u32Tmp2) u32Div = u32Div + 1ul;
509 u32Tmp = 0x400ul * 0x10ul;
510 for(u32PDSCnt = 1ul; u32PDSCnt <= 0x04ul; u32PDSCnt++)
512 if(u32Div <= (u32Tmp * u32PDSCnt))
break;
515 if(u32PDSCnt > 0x4ul) u32PDSCnt = 0x4ul;
517 u32Div = u32Div / u32PDSCnt;
520 u32Min = (uint32_t) - 1;
524 for(u32DSCnt = 6ul; u32DSCnt <= 0x10ul; u32DSCnt++)
526 u32ClkDiv = u32Div / u32DSCnt;
528 if(u32ClkDiv > 0x400ul)
531 u32Tmp = u32Div - (u32ClkDiv * u32DSCnt);
532 u32Tmp2 = u32Tmp + 1ul;
536 u32Tmp = u32Div - (u32ClkDiv * u32DSCnt);
537 u32Tmp2 = ((u32ClkDiv+1ul) * u32DSCnt) - u32Div;
540 if(u32Tmp >= u32Tmp2)
542 u32ClkDiv = u32ClkDiv + 1ul;
544 else u32Tmp2 = u32Tmp;
549 u32MinDSCnt = u32DSCnt;
550 u32MinClkDiv = u32ClkDiv;
573 uuart->
LINECTL = (uuart->
LINECTL & ~UUART_LINECTL_DWIDTH_Msk) | u32data_width;
576 uuart->
PROTCTL = (uuart->
PROTCTL & ~UUART_PROTCTL_STOPB_Msk ) | u32stop_bits;
578 return (u32PCLKFreq/u32PDSCnt/u32MinDSCnt/u32MinClkDiv);
595 uint32_t u32Count, u32delayno;
597 for(u32Count = 0ul; u32Count != u32WriteBytes; u32Count++)
603 if(u32delayno >= 0x40000000ul)
609 if(u32delayno >= 0x40000000ul)
614 uuart->
TXDAT = (uint8_t)pu8TxBuf[u32Count];
636 uuart->
PROTCTL |= u32WakeupMode;
653 uuart->
WKCTL &= ~UUART_WKCTL_WKEN_Msk;
668 uuart->
LINECTL &= ~UUART_LINECTL_CTLOINV_Msk;
671 uuart->
CTLIN0 &= ~UUART_CTLIN0_ININV_Msk;
NuMicro peripheral access layer header file.
uint32_t CLK_GetPCLK1Freq(void)
Get PCLK1 frequency.
uint32_t CLK_GetPCLK0Freq(void)
Get PCLK0 frequency.
#define UUART_PROTSTS_RXSTIF_Msk
#define UUART_PROTSTS_PARITYERR_Msk
#define UUART_PROTIEN_ABRIEN_Msk
#define UUART_PROTSTS_TXSTIF_Msk
#define UUART_BRGEN_DSCNT_Msk
#define UUART_BRGEN_DSCNT_Pos
#define UUART_PROTCTL_PARITYEN_Msk
#define UUART_INTEN_TXENDIEN_Msk
#define UUART_PROTCTL_CTSAUTOEN_Msk
#define UUART_BRGEN_CLKDIV_Msk
#define UUART_INTEN_RXENDIEN_Msk
#define UUART_PROTSTS_FRMERR_Msk
#define UUART_CTL_FUNMODE_Pos
#define UUART_BUFSTS_RXEMPTY_Msk
#define UUART_BUFSTS_TXEMPTY_Msk
#define UUART_PROTCTL_DATWKEN_Msk
#define UUART_PROTSTS_TXENDIF_Msk
#define UUART_BRGEN_PDSCNT_Msk
#define UUART_PROTIEN_RLSIEN_Msk
#define UUART_BUFCTL_RXOVIEN_Msk
#define UUART_DATIN0_EDGEDET_Pos
#define UUART_PROTSTS_ABRDETIF_Msk
#define UUART_PROTSTS_BREAK_Msk
#define UUART_BRGEN_PDSCNT_Pos
#define UUART_PROTCTL_STICKEN_Msk
#define UUART_PROTCTL_RTSAUTOEN_Msk
#define UUART_WKCTL_WKEN_Msk
#define UUART_PROTCTL_CTSWKEN_Msk
#define UUART_BUFSTS_RXOVIF_Msk
#define UUART_INTEN_RXSTIEN_Msk
#define UUART_BRGEN_CLKDIV_Pos
#define UUART_PROTCTL_PROTEN_Msk
#define UUART_LINECTL_LSB_Msk
#define UUART_PROTSTS_RXENDIF_Msk
#define UUART_PROTCTL_EVENPARITY_Msk
#define UUART_INTEN_TXSTIEN_Msk
#define UUART_RLS_INT_MASK
#define UUART_RXEND_INT_MASK
#define UUART_TXEND_INT_MASK
#define UUART_ABR_INT_MASK
#define UUART_TXST_INT_MASK
#define UUART_BUF_RXOV_INT_MASK
#define UUART_RXST_INT_MASK
uint32_t UUART_GetIntFlag(UUART_T *uuart, uint32_t u32Mask)
Get USCI_UART specified interrupt flag.
uint32_t UUART_Read(UUART_T *uuart, uint8_t pu8RxBuf[], uint32_t u32ReadBytes)
Read USCI_UART data.
void UUART_DisableWakeup(UUART_T *uuart)
Disable USCI_UART Wake-up Function.
void UUART_Close(UUART_T *uuart)
Disable USCI_UART function mode.
void UUART_EnableWakeup(UUART_T *uuart, uint32_t u32WakeupMode)
Enable USCI_UART Wake-up Function.
uint32_t UUART_Write(UUART_T *uuart, uint8_t pu8TxBuf[], uint32_t u32WriteBytes)
Write USCI_UART data.
uint32_t UUART_Open(UUART_T *uuart, uint32_t u32baudrate)
Open and set USCI_UART function.
void UUART_DisableInt(UUART_T *uuart, uint32_t u32Mask)
Disable interrupt function.
void UUART_DisableFlowCtrl(UUART_T *uuart)
Disable USCI_UART auto flow control.
uint32_t UUART_SetLine_Config(UUART_T *uuart, uint32_t u32baudrate, uint32_t u32data_width, uint32_t u32parity, uint32_t u32stop_bits)
Set USCI_UART line configuration.
void UUART_EnableInt(UUART_T *uuart, uint32_t u32Mask)
Enable interrupt function.
void UUART_EnableFlowCtrl(UUART_T *uuart)
Enable USCI_UART auto flow control.
void UUART_ClearIntFlag(UUART_T *uuart, uint32_t u32Mask)
Clear USCI_UART specified interrupt flag.