您的位置 首页 方案

LPC1768之串口UART0

串口操作,首先是功率,时钟控制打开。然后是管脚选择,设置为串口模式。然后设定串口传输数据格式。波特率设置,(主意有小数位和没小数位

串口操作,首先是功率,时钟操控翻开。

然后是管脚挑选,设置为串口形式。

然后设定串口传输数据格式。

波特率设置,(主见有小数位和没小数位时分不一样,有小数位需求设置DIVADDL和MULVAL)。

然后锁存波特率。

设定操控UARTn RX和TX FIFO的操作。

最终翻开体系中UART0的中止,使能接纳中止。

详见代码,代码中有具体注释。

  1. #include<LPC17XX.h>
  2. #defineFOSC12000000
  3. #defineFCCLK(FOSC*8)
  4. #defineFCCO(FCCLK*3)
  5. #defineFPCLK(FCCLK/4)
  6. intUart0RecvBuf;//UART0RXDATA
  7. voidUart0Init(uint32_tbps)
  8. {
  9. LPC_SC->PCONP|=(1<<3); //翻开UART0功率、时钟操控位
  10. LPC_PINCON->PINSEL0=0X00000050;//P0.2P0.3设置为串口
  11. LPC_UART0->LCR=0x83; //设置串口数据格式,8位字符长度,1个中止位,无校验,
  12. //使能拜访除数锁存器,设定波特率
  13. LPC_UART0->DLM=((FPCLK/16)/bps)/256;//除数高八位没有小数状况
  14. LPC_UART0->DLL=((FPCLK/16)/bps)%256; //除数第八位
  15. LPC_UART0->LCR=0x03; //制止拜访除数锁存器,确定波特率
  16. LPC_UART0->FCR=0x07; //操控UARTnRX和TXFIFO的操作。接纳数据一个字节触发中止
  17. NVIC_EnableIRQ(UART0_IRQn);
  18. LPC_UART0->IER=0x01; //使能接纳中止
  19. }
  20. intUart0RecvByte(void)//查询法
  21. {
  22. //当UnRBR包括未读字符时,UnLSR[0]就会被置位;当UARTnRBRFIFO为空时,UnLSR[0]就会被清零
  23. //0UnRBR为空
  24. //1UnRBR包括有用数据
  25. while(!((LPC_UART0->LSR)&0x01));//等候判别LSR[0]是否是1,1时表明RBR中接纳到数据
  26. return(LPC_UART0->RBR); //读取接纳数据
  27. }
  28. intUart0SendByte(intbuf)
  29. {
  30. //当检测到UARTnTHR已空时,THRE就会立即被设置。写UnTHR会清零THRE
  31. //0UnTHR包括有用字符
  32. //1UnTHR为空
  33. while(!((LPC_UART0->LSR)&0x01));//等候判别LSR[5](即THRE)是否是1,1时表明THR中为空
  34. LPC_UART0->THR=buf; //发送数据
  35. return0;
  36. }
  37. voidUART0_IRQHandler(void)
  38. {
  39. Uart0RecvBuf=LPC_UART0->RBR;//读取接纳数据
  40. Uart0SendByte(Uart0RecvBuf); //发送接纳到的数据
  41. }
  42. intmain(void)
  43. {
  44. inttemp;
  45. SystemInit();
  46. Uart0Init(115200);
  47. while(1)
  48. {
  49. //temp=Uart0RecvByte();//查询接纳数据
  50. //Uart0SendByte(temp);//发送数据
  51. }
  52. }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/263212.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部