新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TQ2440之串口傳輸數(shù)據(jù)

        TQ2440之串口傳輸數(shù)據(jù)

        作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò) 收藏
        串口打印,好東西啊這個(gè)。目標(biāo)就是從板子傳輸數(shù)據(jù)打印在超級(jí)終端上,也就是在電腦上能顯示板子傳輸?shù)臄?shù)據(jù)即可,這個(gè)比較容易,有參考了TQ自帶的2440lib.c文件,對(duì)初始化那些參考芯片跟那個(gè)c文件之后很快程序就出來(lái)了,有更簡(jiǎn)便的方法,但是要自己寫出來(lái)才比較印象深刻。
        程序如下:
        #include "2440addr.h"
        #include "Option.h"
        #include "def.h"
        //一旦用到U32怎么不行
        unsigned int PCLK;
        extern void Uart_Printf(char *fmt,...);//函數(shù)申明,不然一直提示警告
        extern void Uart_Select(int ch);
        void delay(void)//Delay()在2440lib.c里邊有定義,不小心重定義了,糾結(jié)了一下
        {
        unsigned int i,j;
        for(i=0;i<1000;i++)
        for(j=0;j<1000;j++)
        ;
        }
        void My_uart_init(int mypclk,int mybuat)//我自己寫的串口初始化
        {
        unsigned int a;
        rGPHCON = 0x0faaa;//0x1111 1010 1010 1010選中RTS、CTS、TXD、RXD
        rGPHUP = 0x7ff;//全取消上拉電阻【0;10」共11個(gè)I/O口
        if(mypclk == 0)//如果為0就用mpll中PCLK的時(shí)鐘頻率,這里我用了50MHz,而且必須是50MHz
        mypclk = PCLK;//mpll的PCLK不就是50MHz么,如果設(shè)置為mypclk為0應(yīng)該也是可以,沒(méi)試。
        rUFCON0 = 0x0;
        rUFCON1 = 0x0;
        rUFCON2 = 0x0;//FIFO禁止
        rUMCON0 = 0x0;
        rUMCON1 = 0x0;//禁止AFC等
        rULCON0 = 0x3;//傳輸字長(zhǎng)8字節(jié)
        rUCON0 = 0x245;//【0,3】是保留沒(méi)得設(shè)置的,設(shè)置Rx錯(cuò)誤狀態(tài)中斷,Tx電平中斷。串口1、2設(shè)置一樣
        rUBRDIV0 = ((int)(mypclk/(mybuat*16)))-1;//為發(fā)送器和接收器提供串行時(shí)鐘,計(jì)算公式見(jiàn)芯片手冊(cè)
        rULCON1 = 0x3;
        rUCON1 = 0x245;
        rUBRDIV1 = ((int)(mypclk/(mybuat*16)))-1;
        rULCON2 = 0x3;
        rUCON2 = 0x245;
        rUBRDIV2 = ((int)(mypclk/(mybuat*16)))-1;
        for(a=0;a<100;a++);//延時(shí),參考2440lib.c,個(gè)人理解應(yīng)該是
        }
        void Main(void)
        {
        Uart_Select(0);//選擇串口0
        My_uart_init(50000000,115200);//給時(shí)鐘50MHz,波特率115200串口才能工作
        Uart_Printf("nn");//測(cè)試2440lib.c里面關(guān)于輸入n是不是會(huì)另外補(bǔ)上r,回車換行
        delay();
        while(1)
        {
        Uart_Printf("I love caimanjun more than myselfn"); //打印字符串
        delay();
        Uart_Printf("yes I do! n");
        delay();
        }
        }


        關(guān)鍵詞: TQ2440串口傳輸數(shù)

        評(píng)論


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

        關(guān)閉
        主站蜘蛛池模板: 合川市| 临漳县| 宁安市| 庆阳市| 新龙县| 临高县| 法库县| 开化县| 贞丰县| 山西省| 得荣县| 陆川县| 华蓥市| 中江县| 临湘市| 冷水江市| 万山特区| 浮山县| 疏勒县| 四川省| 桐乡市| 湟中县| 临洮县| 苍山县| 大宁县| 同心县| 嘉禾县| 墨江| 张家港市| 新河县| 阳西县| 娄烦县| 福鼎市| 贵南县| 抚远县| 金门县| 塔城市| 丹东市| 霍州市| 睢宁县| 孟津县|