日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM9硬件接口學習之UART

          ARM9硬件接口學習之UART

          作者: 時間:2013-01-04 來源:網絡 收藏

            2) 發(fā)送數據:

            a.UTRSTAT0 ( channel 0 Tx/Rx status register ):

            位[2]:無數據發(fā)送時,自動設為1。當我們要使用串口發(fā)送數據時,先讀此位以判斷是否有數據正在占用發(fā)送口。

            位[1]:發(fā)送FIFO是否為空,本實驗未用此位

            位[0]:接收緩沖區(qū)是否有數據,若有,此位設為1。本實驗中,需要不斷查詢此位一判斷是否有數據已經被接收。

            b.UTXH0 ( channel 0 transmit buffer register ):

            把要發(fā)送的數據寫入此寄存器。

          3) 接收數據:

            a.UTRSTAT0:如上描述,我們用到位[0]

            b.URXH0 ( channel 0 receive buffer register ):

            當查詢到UTRSTAT0 位[0]=1時,讀此寄存器獲得串口接收到的數據。

            4) 實驗源代碼

            /* main.c */

            #include "uart.h"

            #include "clock.h"

            #include "watchdog.h"

            int Main(void)

            {

            char key = ' ';

            clock_init(); //初始化時鐘

            uart_init(); //初始化串口

            close_watchdog();

            uart_send("uart communication success!");

            while(1)

            {

            uart_send("If you want to quit ,please pess 'e'");

            key = uart_get();

            if (key == 'e')

            {

            uart_send ("you pressed 'e' and you'll quit!");

            break;

            }

            else

            {

            uart_send("you pressed ");

            uart_send(key);

            uart_send(",retry!");

            }

            }

            uart_send("the program exited by user!");

            return 0;

            }

            下面是串口相關部分源碼:

            void uart_init(void)

            {

            ULCON0 = 0x03; //8N1

            UCON0 = 0x005; //中斷或查詢方式

            UFCON0 = 0x00; //不使用FIFO

            UMCON0 = 0x00; //不使用流控

            UBRDIV0 = 27; //波特率為115200

            GPHCON |= 0xa0; //GPH2,GPH3 set as TXD0,RXD0

            GPHUP = 0x0c; //GPH2,GPH3內部上拉

            }

            void uart_send(char * c)

            {

            for (; *c != '