UART0初始化

UART0初始化:
板子LPC1788
UART0初始化步骤:
1. 初始化引脚。
 *(INT32U*) IOCON_P0_02 = 0X00000021;
 *(INT32U*) IOCON_P0_03 = 0X00000021;
2. 一些相关寄存器的赋值。
 *(INT32U*) PCONP |= PCUART0;//UART0 power on
 *(INT32U*) U0LCR = WLS_8|SBS_1|PE_Dis|DLAB_En;//8位数据,1位停止位,无奇偶校验,DLAB=1
 *(INT32U*) U0DLL = 0x20;//设置波特率
 *(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中断
程序对于发送和接收采用中断方式,另外还有查询方式。
发送功能实现程序:
 for(i = 0; i < len; i++)
 { 
   *(INT8U*) U0THR = (str[i] & 0xFF);//给发送保持寄存器赋值
   while(!(*(INT32U*) U0IIR & 0x00000002));//检查是否产生THR中断
  // while(!(*(INT32U*)U0LSR)&(1<<5));
 }
  *(INT8U*) U0THR = 0x0a;//在这一串字符的末尾,输出回车符
接收功能实现程序:
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;
   }
以上是UART0初始化的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>