新聞中心

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

        ARM9硬件接口學習之UART

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

          2) 發送數據:

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

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

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

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

          b.UTXH0 ( channel 0 transmit buffer register ):

          把要發送的數據寫入此寄存器。

        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 != '

        主站蜘蛛池模板: 马龙县| 汽车| 达拉特旗| 东阿县| 梁山县| 安新县| 文登市| 遵义县| 疏附县| 台中县| 苗栗县| 门源| 大化| 肇源县| 承德县| 临漳县| 和龙市| 高安市| 来安县| 扬中市| 黔南| 铜梁县| 济阳县| 姜堰市| 两当县| 临澧县| 香港| 北辰区| 潞西市| 福安市| 彝良县| 长宁区| 溆浦县| 靖远县| 陈巴尔虎旗| 手游| 九江市| 平舆县| 陆河县| 东乡族自治县| 武穴市|