原创 LPC1768之串口UART0

2014-6-27 16:27 2373 14 14 分类: MCU/ 嵌入式

 

  1. void Uart0Init(uint32_t bps)   
  2. {  
  3.     LPC_SC->PCONP |= (1<<3);               //打开UART0功率、时钟控制位  
  4.   
  5.     LPC_PINCON->PINSEL0 = 0X00000050;        //P0.2 P0.3设置为串口  
  6.   
  7.     LPC_UART0->LCR = 0x83;                   //设置串口数据格式,8位字符长度,1个停止位,无校验,  
  8.                                             //使能访问除数锁存器 ,设定波特率  
  9.     LPC_UART0->DLM = ((FPCLK/16)/bps) / 256; //除数高八位  , 没有小数情况  
  10.     LPC_UART0->DLL = ((FPCLK/16)/bps) % 256;     //除数第八位  
  11.   
  12.     LPC_UART0->LCR = 0x03;                   //禁止访问除数锁存器,锁定波特率  
  13.   
  14.     LPC_UART0->FCR  = 0x07;              //控制UARTn RX和TX FIFO的操作。接收数据一个字节触发中断  
  15.   
  16.     NVIC_EnableIRQ(UART0_IRQn);              /* enable irq in nvic              */  
  17.     LPC_UART0->IER = 0x01;                   //使能接收中断  
  18. }  
  19. /********************************************************************************  
  20. ** Descriptions         :Uart0 Receive Data  
  21. **  
  22. ** parameters           :None   
  23. ** Returned value       :Received Data  
  24. *********************************************************************************/  
  25. int Uart0RecvByte(void)   //查询法  
  26. {  
  27.     //当UnRBR包含未读字符时,UnLSR[0]就会被置位;当UARTn RBR FIFO为空时,UnLSR[0]就会被清零  
  28.     //0  -  UnRBR为空  
  29.     //1  -  UnRBR包含有效数据  
  30.     while(!((LPC_UART0->LSR) & 0x01));       //等待判断LSR[0]是否是1,1时表示RBR中接收到数据        
  31.       
  32.     return(LPC_UART0->RBR);                  //读取接收数据  
  33. }  
  34. /********************************************************************************  
  35. ** Descriptions         :Uart0 Send Data  
  36. **  
  37. ** parameters           :None   
  38. ** Returned value       :None  
  39. *********************************************************************************/  

文章评论0条评论)

登录后参与讨论
我要评论
0
14
关闭 站长推荐上一条 /2 下一条