新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 改進利用串口的FIFO接收數據

        改進利用串口的FIFO接收數據

        作者: 時間:2016-11-20 來源:網絡 收藏
        1. /****************************************************************************
        2. #*名稱:UART_Initt
        3. #*功能:初始化UART0中斷以及中斷向量表的配置
        4. #*入口參數:無
        5. #*出口參數:無
        6. #****************************************************************************/
        7. voidUART_Init(void)
        8. {
        9. uint16Fdiv;
        10. U0LCR=0x83;//相關校驗位、數據長度等的設置,DLAB=1,可設置波特率
        11. Fdiv=(Fpclk/16)/BAUD;
        12. U0DLM=Fdiv/256;
        13. U0DLL=Fdiv%256;
        14. U0LCR=0X03;
        15. U0IER=0X01;//只使能接收中斷
        16. U0FCR=0x81;//使能發送和接收的FIFO,8字節觸發
        17. IRQEnable();//使能IRQ中斷(這一步注意,下午調試了好久,唉)
        18. VICIntSelect=0x00000000;//設置所有通道為IRQ中斷
        19. VICVectCntl0=0x20|6;//UART0通道分配到IRQslot0,優先級最高
        20. VICVectAddr0=(uint32)UART0_IRQ;//設置UART0中斷程序地址
        21. VICIntEnable=0x40;//使能UART0中斷
        22. }
        23. void__irqUART0_IRQ(void)
        24. {
        25. intcount;
        26. switch(U0IIR&0x0F)
        27. {
        28. case0x02://產生發送中斷
        29. break;
        30. case0x04://FIFO接收數據到達8個字節
        31. for(count=0;count<8;count++)
        32. {
        33. Recive_Buffer[UART0Count++]=U0RBR;//保存接收到的數據
        34. }
        35. rcv_new=1;//標志接收到新的數據
        36. break;
        37. case0x0c://FIF0中至少有一個數據,而且在3.5到4.5個字符時間內無數據進(可判斷數據接收完畢)
        38. while((U0LSR&0x01)==0x01)
        39. {
        40. Recive_Buffer[UART0Count++]=U0RBR;
        41. }
        42. rcv_new=1;//標志接收到新的數據
        43. break;
        44. default:
        45. break;
        46. }
        47. VICVectAddr=0x00;//結束中斷
        48. }


        關鍵詞: 串口FIFO接收數

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 台南市| 宜春市| 都匀市| 永兴县| 余庆县| 巴楚县| 高陵县| 大连市| 甘孜县| 高平市| 鄄城县| 遂平县| 黑水县| 兴业县| 六盘水市| 班戈县| 三原县| 眉山市| 黑水县| 抚州市| 无锡市| 富川| 金沙县| 永丰县| 花莲县| 西昌市| 桐城市| 观塘区| 桂东县| 武乡县| 建阳市| 新和县| 平顺县| 红安县| 达孜县| 固安县| 池州市| 巩义市| 民县| 全南县| 南陵县|