專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

UART0初始化

作者:未知   來(lái)源:布冬冬 的空間   點(diǎn)擊數(shù):  更新時(shí)間:2014年08月16日   【字體:

 

 
 
UART0初始化:
 
板子LPC1788
 
 
 
UART0初始化步驟:
 
1. 初始化引腳。
 
 *(INT32U*) IOCON_P0_02 = 0X00000021;
 *(INT32U*) IOCON_P0_03 = 0X00000021;
 
2. 一些相關(guān)寄存器的賦值。
 
 *(INT32U*) PCONP |= PCUART0;//UART0 power on
 *(INT32U*) U0LCR = WLS_8|SBS_1|PE_Dis|DLAB_En;//8位數(shù)據(jù),1位停止位,無(wú)奇偶校驗(yàn),DLAB=1
 *(INT32U*) U0DLL = 0x20;//設(shè)置波特率
 *(INT32U*) U0DLM = 0;
 
 
 
 *(INT32U*) U0FCR = 0x00000087;//enable FIFO,Rx.Tx FIFO Reset,Rx Trigger Level 2(8 bytes)
 *(INT32U*) U0LCR = WLS_8|SBS_1|PE_Dis|DLAB_Dis;//DLAB=0
 
 *(INT32U*) U0IER = 0x00000007;//RDA,THRE,LSR中斷
 
 
 
程序?qū)τ诎l(fā)送和接收采用中斷方式,另外還有查詢(xún)方式。
 
發(fā)送功能實(shí)現(xiàn)程序:
 
 for(i = 0; i < len; i++)
 { 
   *(INT8U*) U0THR = (str[i] & 0xFF);//給發(fā)送保持寄存器賦值
   while(!(*(INT32U*) U0IIR & 0x00000002));//檢查是否產(chǎn)生THR中斷
  // while(!(*(INT32U*)U0LSR)&(1<<5));
 }
  *(INT8U*) U0THR = 0x0a;//在這一串字符的末尾,輸出回車(chē)符
 
接收功能實(shí)現(xiàn)程序:
 
while(!(*(INT32U*) U0IIR & 0x01))
 {
   switch(*(INT8U*) U0IIR & 0x0F)
   {
   case 0x04:  //RDA
     *buffer_addr ++ = *(INT8U*) U0RBR;
     break;
   case 0x0C:  //CTI
     *buffer_addr ++ = *(INT8U*) U0RBR;
     break;
   case 0x06:
     che = *(INT8U*) U0LSR;//LSR
     break;
   default:
     break;
   }
 
關(guān)閉窗口

相關(guān)文章