在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 三 ARM9(S3C2440)的串口UART——程序實例講解

            三 ARM9(S3C2440)的串口UART——程序實例講解

            作者: 時間:2016-11-27 來源:網絡 收藏
            串口通信程序編寫步驟

            UART通信程序可以采用查詢、中斷和DMA模式。我們通過使用較多的中斷方式來介UART通信程序的編寫。簡單做法是,UART通信程序的編寫參照例子程序。

            本文引用地址:http://www.biyoush.com/article/201611/322168.htm

            選通道,通過函數(shù)Uart_Select();選UART0~UART2;

            選波特率和波特率發(fā)生器時鐘,選波特率通過函數(shù)Uart_Pclk_En(int ch, int baud)或Uart_Pclk_En(int ch, int baud)來進行。時鐘選UCLK ,rUCON0|=0x400;時鐘選PCLK ,rUCON0&=0x3ff。

            通信協(xié)議(rULCON0)設定,如果正常通信,一位停止位,8位數(shù)據(jù)位,無奇偶效驗: rULCON0=(0<<6)|(0<<3)|(0<<2)|(3);

            通信控制字(rUCON0)設定,如時鐘選ULK做波特率發(fā)生器;Tx中斷脈沖觸發(fā),Rx中斷脈沖觸發(fā);接收超時中斷允許;產生接收錯誤中斷;正常模式發(fā)送:

            rUCON0|=(TX_INTTYPE<<9)|(RX_INTTYPE<<8)|(0<<7)|(0<<6)|(0<<5)|(0<<4)|(1<<2)|(1);

            I/O口初始化,因為UART通信使用H口的第二功能,所以H口要上拉禁止:rGPHUP|=0x1ff。H口控制寄存器nRTS1,nCTS1功能使能,rGPHCON&=0x3c0000,rGPHCON|=0x2faaa;

            設中斷服務函數(shù)入口地址,把中斷服務函數(shù)入口地址賦函數(shù)指針PISR_UARTn, 注意,接收中斷服務函數(shù)入口地址和發(fā)送中斷服務函數(shù)入口地址是一個,在中斷服務函數(shù)中根據(jù)

            UTRSTATn [1]和UTRSTATn [0]狀態(tài)決定是發(fā)送中斷還是接收中斷。

            打開總中斷屏蔽和子中斷屏蔽等待中斷:

            rINTMSK=~(BIT_UART0);

            rINTSUBMSK=~(BIT_SUB_TXD0);

            進入中斷后,先屏蔽發(fā)送和接收中斷,防止新來中斷干擾我們的正常發(fā)送和接收,正常發(fā)送和接收結束后,清中斷掛起和中斷源掛起寄存器:ClearPending(BIT_UART0),rSUBSRCPND=(BIT_SUB_TXD0(發(fā)送),rSUBSRCPND=(BIT_SUB_RXD0|BIT_SUB_ERR0)(接收);

            取消中斷屏蔽,等下一次中斷。

            下面是利用查詢方式的串口通信程序(FL2440開發(fā)板)

            #include"2440addr.h"http://該程序是PC機通過串口工具向開發(fā)板發(fā)送1234這四個數(shù)字來控制四個LED的亮滅

            int TSmain()
            {
            char buf,i;

            rULCON0 &=0XFFFFFF00;
            rULCON0 |=0X03;//1位起始位,8位數(shù)據(jù)位
            rUCON0=0x05;//0X0805;//串口時鐘PCLK,查詢方式 東:PCLK為50M
            rUBRDIV0 =325;//0X1A;//波特率115200****325時設置為9600
            rGPBCON = 0x1dd7fc;//GPB5,6,8,10設置為輸出
            rGPBDAT|=0x560;//4個LED全滅
            while(1)
            {
            if(rUTRSTAT0 & 0X01)//接收是否完畢 =1結束
            {

            buf=rURXH0;//讀取數(shù)據(jù)
            while(!(rUTRSTAT0 & 0X04));//是否允許發(fā)送 =1允許

            rUTXH0=buf;
            if(buf==1)//判斷接收到的是哪一個數(shù)字
            i=1;
            else if(buf==2)
            i=2;
            else if(buf==3)
            i=3;
            else if(buf==4)
            i=4;
            switch(i){//使相應的LED亮滅

            case 1:
            rGPBDAT^=(1<<5);
            i=0;//將i清零防止下次收到其他數(shù)據(jù)時干擾
            break;
            case 2:
            rGPBDAT^=(1<<6);
            i=0;
            break;
            case 3:
            rGPBDAT^=(1<<8);
            i=0;
            break;
            case 4:
            rGPBDAT^=(1<<10);
            i=0;
            break;
            default:break;
            }

            }
            }

            return 0;
            }


            上一頁 1 2 下一頁

            關鍵詞: ARM9S3C2440串口UAR

            評論


            技術專區(qū)

            關閉