新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 最簡單的s3c2440的UART功能測試

        最簡單的s3c2440的UART功能測試

        作者: 時間:2016-11-20 來源:網絡 收藏
        * 文件名稱:UART.c
        * 實現功能:最基本的UART發送與接收
        * 作者:無jianqi
        * 版本:1.0

        #include"2440addr.h" //包含2440相關寄存器的設置

        本文引用地址:http://www.104case.com/article/201611/318921.htm#include"def.h"

        //四個LED對應GPB5.6.7.8。
        #define LED1 5
        #define LED2 6
        #define LED3 7
        #define LED4 8

        #define BAUD 115200 //波特率
        #define Bit(x) (1<#define Output(x) (1<<2*x) //將對應IO置為輸出
        #define LED_On(x) rGPBDAT=~Bit(x) //點亮相應LED


        * 名稱:Clk_Set
        * 功能:關于系統時鐘的初始化
        * 入口參數:無
        * 出口參數:無

        void Clk_Set(void)
        {
        int count;
        rUPLLCON=(56<<12)|(2<<4)|2; //UCLK為48MHZ
        for(count=0;count<10;count++)
        {
        ;
        }
        rMPLLCON=(92<<12)|(1<<4)|1; //FCLK為400MHZ
        rCLKDIVN=(0<<3)|(2<<1)|1;//HCLK位100MHZ,PCLK為50MHZ
        rCAMDIVN=(0<<9); //PCLK=HCLK/4
        }

        * 名稱:IO_init
        * 功能:關于LED的端口初始化
        * 入口參數:無
        * 出口參數:無

        void IO_init(void)
        {
        rGPBCON=Output(LED1)|Output(LED2)|Output(LED3)|Output(LED4); //LED的IO口置為輸出
        rGPBDAT=0xffff; //LED全部熄滅
        }


        * 名稱:UART0_init
        * 功能:UART0相關的初始化工作
        * 入口參數:無
        * 出口參數:無

        void UART0_init(void)
        {
        rGPHCON=0xa0; //IO口使能UART0功能
        rGPHUP=0xff; //上拉禁止
        rULCON0=0x03; // 8位數據,無校驗,1位停止位
        rUCON0=0x05; //pclk時鐘,中斷請求方式為Tx-電平,Rx-脈沖
        rUBRDIV0=26; //設置波特率
        rUFCON0=0x00; //不使用FIFO
        rUMCON0=0x00; //不使用流控
        }


        * 名稱:Send_Byte
        * 功能:發送一個字符
        * 入口參數:等待發送的字符
        * 出口參數:無

        void Send_Byte(char data)
        {
        while(!(rUTRSTAT0&0x2)); //等待發送緩沖器空
        rUTXH0=data;
        }


        * 名稱:Send_String
        * 功能:發送字符串
        * 入口參數:等待發送的字符串
        * 出口參數:無

        void Send_String(char* pt)
        {
        while(*pt)
        {
        Send_Byte(*pt++);
        }
        }


        * 名稱:Uart_Getch
        * 功能:接收一個字符
        * 入口參數:無
        * 出口參數:接收的字符

        char Uart_Getch(void)
        {
        while(!(rUTRSTAT0&0x1)); //等待接收緩沖器有數據
        return (rURXH0); //讀出數據
        }


        * 名稱:Main
        * 功能:測試UART發送和接收函數
        * 入口參數:無
        * 出口參數:無

        void Main(void)
        {
        char temp;
        IO_init();
        UART0_init();
        Clk_Set();
        Send_String("HelloWorld"); //發送字符串
        while(1)
        {
        temp=Uart_Getch(); //接收到字符
        if(temp==0x01)
        {
        LED_On(LED1);
        }
        }

        }


        關鍵詞: s3c2440UART功能測

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 通城县| 五莲县| 榆社县| 民权县| 深水埗区| 郁南县| 晋城| 桓台县| 南郑县| 朔州市| 卫辉市| 晋宁县| 仲巴县| 巴楚县| 蓝田县| 西昌市| 望谟县| 徐闻县| 郧西县| 高青县| 黑山县| 秦皇岛市| 稷山县| 同仁县| 华安县| 图木舒克市| 晴隆县| 吴桥县| 溆浦县| 深水埗区| 河间市| 伊川县| 皮山县| 龙口市| 通海县| 太白县| 庄浪县| 台南县| 特克斯县| 杭锦后旗| 宝丰县|