色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          LPC1768之串口UART0

          作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
          串口操作,首先是功率,時(shí)鐘控制打開(kāi)。

          然后是管腳選擇,設(shè)置為串口模式。

          本文引用地址:http://cafeforensic.com/article/201611/319422.htm

          然后設(shè)定串口傳輸數(shù)據(jù)格式。

          波特率設(shè)置,(主意有小數(shù)位和沒(méi)小數(shù)位時(shí)候不一樣,有小數(shù)位需要設(shè)置DIVADDL和MULVAL)。

          然后鎖存波特率。

          設(shè)定控制UARTn RX和TX FIFO的操作。

          最后打開(kāi)系統(tǒng)中UART0的中斷,使能接收中斷。

          詳見(jiàn)代碼,代碼中有詳細(xì)注釋。

          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); //打開(kāi)UART0功率、時(shí)鐘控制位
          10. LPC_PINCON->PINSEL0=0X00000050;//P0.2P0.3設(shè)置為串口
          11. LPC_UART0->LCR=0x83; //設(shè)置串口數(shù)據(jù)格式,8位字符長(zhǎng)度,1個(gè)停止位,無(wú)校驗(yàn),
          12. //使能訪問(wèn)除數(shù)鎖存器,設(shè)定波特率
          13. LPC_UART0->DLM=((FPCLK/16)/bps)/256;//除數(shù)高八位沒(méi)有小數(shù)情況
          14. LPC_UART0->DLL=((FPCLK/16)/bps)%256; //除數(shù)第八位
          15. LPC_UART0->LCR=0x03; //禁止訪問(wèn)除數(shù)鎖存器,鎖定波特率
          16. LPC_UART0->FCR=0x07; //控制UARTnRX和TXFIFO的操作。接收數(shù)據(jù)一個(gè)字節(jié)觸發(fā)中斷
          17. NVIC_EnableIRQ(UART0_IRQn);
          18. LPC_UART0->IER=0x01; //使能接收中斷
          19. }
          20. intUart0RecvByte(void)//查詢法
          21. {
          22. //當(dāng)UnRBR包含未讀字符時(shí),UnLSR[0]就會(huì)被置位;當(dāng)UARTnRBRFIFO為空時(shí),UnLSR[0]就會(huì)被清零
          23. //0-UnRBR為空
          24. //1-UnRBR包含有效數(shù)據(jù)
          25. while(!((LPC_UART0->LSR)&0x01));//等待判斷LSR[0]是否是1,1時(shí)表示RBR中接收到數(shù)據(jù)
          26. return(LPC_UART0->RBR); //讀取接收數(shù)據(jù)
          27. }
          28. intUart0SendByte(intbuf)
          29. {
          30. //當(dāng)檢測(cè)到UARTnTHR已空時(shí),THRE就會(huì)立即被設(shè)置。寫UnTHR會(huì)清零THRE
          31. //0-UnTHR包含有效字符
          32. //1-UnTHR為空
          33. while(!((LPC_UART0->LSR)&0x01));//等待判斷LSR[5](即THRE)是否是1,1時(shí)表示THR中為空
          34. LPC_UART0->THR=buf; //發(fā)送數(shù)據(jù)
          35. return0;
          36. }
          37. voidUART0_IRQHandler(void)
          38. {
          39. Uart0RecvBuf=LPC_UART0->RBR;//讀取接收數(shù)據(jù)
          40. Uart0SendByte(Uart0RecvBuf); //發(fā)送接收到的數(shù)據(jù)
          41. }
          42. intmain(void)
          43. {
          44. inttemp;
          45. SystemInit();
          46. Uart0Init(115200);
          47. while(1)
          48. {
          49. //temp=Uart0RecvByte();//查詢接收數(shù)據(jù)
          50. //Uart0SendByte(temp);//發(fā)送數(shù)據(jù)
          51. }
          52. }


          關(guān)鍵詞: LPC1768串口UART

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉