新聞中心

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

        最簡單的S3c2440UART功能測試

        作者: 時間:2016-11-20 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201611/318932.htm
        1. /*******************************************
        2. *文件名稱:UART.c
        3. *實現功能:最基本的UART發送與接收
        4. *作者:無jianqi
        5. *版本:1.0
        6. **********************************************/
        7. #include"2440addr.h"http://包含2440相關寄存器的設置
        8. #include"def.h"
        9. //四個LED對應GPB5.6.7.8。
        10. #defineLED15
        11. #defineLED26
        12. #defineLED37
        13. #defineLED48
        14. #defineBAUD115200//波特率
        15. #defineBit(x)(1<
        16. #defineOutput(x)(1<<2*x)//將對應IO置為輸出
        17. #defineLED_On(x)rGPBDAT=~Bit(x)//點亮相應LED
        18. /*******************************************
        19. *名稱:Clk_Set
        20. *功能:關于系統時鐘的初始化
        21. *入口參數:無
        22. *出口參數:無
        23. **********************************************/
        24. voidClk_Set(void)
        25. {
        26. intcount;
        27. rUPLLCON=(56<<12)|(2<<4)|2;//UCLK為48MHZ
        28. for(count=0;count<10;count++)
        29. {
        30. ;
        31. }
        32. rMPLLCON=(92<<12)|(1<<4)|1;//FCLK為400MHZ
        33. rCLKDIVN=(0<<3)|(2<<1)|1;//HCLK位100MHZ,PCLK為50MHZ
        34. rCAMDIVN=(0<<9);//PCLK=HCLK/4
        35. }
        36. /*******************************************
        37. *名稱:IO_init
        38. *功能:關于LED的端口初始化
        39. *入口參數:無
        40. *出口參數:無
        41. **********************************************/
        42. voidIO_init(void)
        43. {
        44. rGPBCON=Output(LED1)|Output(LED2)|Output(LED3)|Output(LED4);//LED的IO口置為輸出
        45. rGPBDAT=0xffff;//LED全部熄滅
        46. }
        47. /*******************************************
        48. *名稱:UART0_init
        49. *功能:UART0相關的初始化工作
        50. *入口參數:無
        51. *出口參數:無
        52. **********************************************/
        53. voidUART0_init(void)
        54. {
        55. rGPHCON=0xa0;//IO口使能UART0功能
        56. rGPHUP=0xff;//上拉禁止
        57. rULCON0=0x03;//8位數據,無校驗,1位停止位
        58. rUCON0=0x05;//pclk時鐘,中斷請求方式為Tx-電平,Rx-脈沖
        59. rUBRDIV0=26;//設置波特率
        60. rUFCON0=0x00;//不使用FIFO
        61. rUMCON0=0x00;//不使用流控
        62. }
        63. /*******************************************
        64. *名稱:Send_Byte
        65. *功能:發送一個字符
        66. *入口參數:等待發送的字符
        67. *出口參數:無
        68. **********************************************/
        69. voidSend_Byte(chardata)
        70. {
        71. while(!(rUTRSTAT0&0x2));//等待發送緩沖器空
        72. rUTXH0=data;
        73. }
        74. /*******************************************
        75. *名稱:Send_String
        76. *功能:發送字符串
        77. *入口參數:等待發送的字符串
        78. *出口參數:無
        79. **********************************************/
        80. voidSend_String(char*pt)
        81. {
        82. while(*pt)
        83. {
        84. Send_Byte(*pt++);
        85. }
        86. }
        87. /*******************************************
        88. *名稱:Uart_Getch
        89. *功能:接收一個字符
        90. *入口參數:無
        91. *出口參數:接收的字符
        92. **********************************************/
        93. charUart_Getch(void)
        94. {
        95. while(!(rUTRSTAT0&0x1));//等待接收緩沖器有數據
        96. return(rURXH0);//讀出數據
        97. }
        98. /*******************************************
        99. *名稱:Main
        100. *功能:測試UART發送和接收函數
        101. *入口參數:無
        102. *出口參數:無
        103. **********************************************/
        104. voidMain(void)
        105. {
        106. chartemp;
        107. IO_init();
        108. UART0_init();
        109. Clk_Set();
        110. Send_String("HelloWorld");//發送字符串
        111. while(1)
        112. {
        113. temp=Uart_Getch();//接收到字符
        114. if(temp==0x01)
        115. {
        116. LED_On(LED1);
        117. }
        118. }
        119. }




        關鍵詞: S3c2440UART功能測

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 墨玉县| 南江县| 彩票| 永春县| 新民市| 靖江市| 桑日县| 同德县| SHOW| 苏尼特左旗| 西丰县| 宜都市| 墨江| 弥勒县| 大关县| 太白县| 赫章县| 内黄县| 济南市| 西城区| 乌恰县| 阆中市| 新巴尔虎左旗| 盖州市| 旺苍县| 灌南县| 平武县| 新巴尔虎右旗| 察隅县| 南京市| 紫金县| 积石山| 全椒县| 合江县| 平乡县| 芜湖县| 铅山县| 汶上县| 电白县| 诸城市| 宁阳县|